포인터와 배열 접근
2024. 11. 28. 14:26ㆍ정보처리,전산/Clang
반응형
#include <stdio.h>
int main(void) {
int a[4] = {1, 2, 3, 4}; // 정수형 배열 a
int *ptr = a; // 포인터 변수 ptr은 배열 a의 시작 주소를 가리킴
char str[] = "hello"; // 문자열 str 정의
printf("a 배열 첫 번째 요소: %d\n", a[0]); // 배열의 첫 번째 요소 출력
printf("a의 시작 주소의 값: %d\n", *ptr); // 포인터가 가리키는 값 출력
printf("a의 (시작 주소 + 1)의 값: %d\n", *(ptr + 1)); // 포인터 이동 후 값 출력
printf("str의 크기: %d\n", (int)sizeof(str)); // 문자열 str의 크기 출력
printf("str[5]의 값: %c\n", str[5]); // str[5]는 '\0'(널 문자) 출력
printf("ASCII 값의 연산: %d\n", '1' + '0'); // 문자 '1'과 '0'의 ASCII 값의 합
printf("ASCII 코드로 변환: %d\n", '1'); // 문자 '1'의 ASCII 값 출력
return 0;
}
코드 실행 해석
1. printf("a 배열 첫 번째 요소: %d\n", a[0]);
- 배열 a의 첫 번째 요소는 1.
- 출력 결과: a 배열 첫 번째 요소: 1.
2. printf("a의 시작 주소의 값: %d\n", *ptr);
- 포인터 ptr은 배열 a의 시작 주소를 가리킴.
- *ptr은 a[0]을 참조하므로 값은 1.
- 출력 결과: a의 시작 주소의 값: 1.
3. printf("a의 (시작 주소 + 1)의 값: %d\n", *(ptr + 1));
- ptr + 1은 배열의 두 번째 요소 a[1]를 가리킴.
- *(ptr + 1)은 a[1]의 값인 2를 참조.
- 출력 결과: a의 (시작 주소 + 1)의 값: 2.
4. printf("str의 크기: %d\n", (int)sizeof(str));
- 문자열 "hello"는 5개의 문자와 마지막 널 문자 \0로 구성됨.
- 배열 str의 크기는 6.
- 출력 결과: str의 크기: 6.
5. printf("str[5]의 값: %c\n", str[5]);
- str[5]는 문자열 "hello"의 널 문자 \0을 참조.
- 출력 결과: str[5]의 값: (널 문자 출력으로 공백처럼 보임).
6. printf("ASCII 값의 연산: %d\n", '1' + '0');
- 문자 '1'의 ASCII 값은 49, '0'의 ASCII 값은 48.
- 49 + 48 = 97.
- 출력 결과: ASCII 값의 연산: 97.
7. printf("ASCII 코드로 변환: %d\n", '1');
- 문자 '1'의 ASCII 값은 49.
- 출력 결과: ASCII 코드로 변환: 49.
a 배열 첫 번째 요소: 1
a의 시작 주소의 값: 1
a의 (시작 주소 + 1)의 값: 2
str의 크기: 6
str[5]의 값:
ASCII 값의 연산: 97
ASCII 코드로 변환: 49
반응형
'정보처리,전산 > Clang' 카테고리의 다른 글
문자열 포인터 (0) | 2024.11.28 |
---|---|
완전수 (0) | 2024.11.28 |
실제 코드 내에서 malloc을 호출하기 때문에 메모리를 힙에 저장한다 (0) | 2024.08.10 |
변수의 범위(scope) (0) | 2024.07.26 |
포인터 배열 , 배열 포인터 (1) | 2024.07.24 |