출처 : 윤성우. 윤성우의 열혈 C 프로그래밍. 오렌지미디어, 2010.
- 몰랐던 or 까먹었던 내용 위주 정리
1. 배열의 이름(상수 형태의 포인터)은 배열의 시작 주소 값을 의미하며, 그 형태는 값의 저장이 불가능한 상수이다.
2. TYPE형 포인터를 대상으로 n의 크기만큼 값을 증가 및 감소 시, n * sizeof(TYPE)의 크기만큼 주소 값이 증가 및 감소합니다.
3. 변수 형태의 문자열, 상수 형태의 문자열
4. 큰따옴표로 묶여서 표현되는 문자열은 그 형태에 상관없이 메모리 공간에 저장된 후 그 주소 값이 반환된다.
배열의 이름은 상수 형태의 포인터이다. 따라서 * 연산도 가능
서식문자 %p : 주소 값의 출력
배열의 이름은 대입 연산자의 피연산자가 될 수 없다.(값의 저장이 불가능)
동일한 문장
int * ptr = &arr[0];
int * ptr = arr;
메모리 접근을 위한 * 연산
*ptr, *(ptr+1), *(ptr+2) == arr[0], arr[1], arr[2]
*(++ptr)=27; //ptr에 저장된 값 자체를 변경
*(ptr+1)=27; //ptr에 저장된 값은 변경되지 않음
arr[i] == *(arr+i)
변수 형태의 문자열
char str1[] = "Hi";
상수 형태의 문자열
char * str = "Hi";
printf 함수는 문자열의 주소 값을 전달받는 함수이다.
문자열의 시작 주소 값을 담고 있다.
"큰따옴표로 묶여서 표현되는 문자열은 그 형태에 상관없이 메모리 공간에 저장된 후 그 주소 값이 반환된다."
댓글