배열명의 숨겨진 의미
#include int main(void){ int imsi[3] = {5, 3, 7}; int *imsip; imsip = imsi printf("%d %d %d \n", *(imsip + 0), *(imsip + 1), *(imsip + 2)); } 1) 배열명은 배열의 첫 번째 배열 요소의 주소를 의미한다. 2) *(imsip + 0), *(imsip + 1), *(imsip + 2)는 각각 imsi[0], imsi[1], imsi[2]를 의미한다. 3) (imsip + 0), (imsip + 1), (imsip + 2)는 각각 &imsi[0], &imsi[1], &imsi[2]를 의미한다.
C언어 포인터
2022. 5. 22. 15:25
포인터 변수에 형을 지정하는 이유
1) 포인터 변수는 형에 상관없이 4바이트 공간을 지정 받는다. 실제로는 없지만 예를 들어, pointer 라는 형을 써서 pointer *num 과 같이 사용해도 되겠다는 생각을 할 수 있다. 하지만 이 포인터 변수의 형은 쓸 곳이 있다. 바로 포인터 형에 의해서 역참조(주소를 참조해서 값을 가져옴) 될 때 읽어올 데이터 바이트 수가 결정 되는 것이다. 쉽게 말해서 포인터 변수의 타입은 포인터 변수가 가리키는 번지로 가서 몇 바이트를 읽어 오는지를 알려주는 것이다. ex) int *num => num에 저장된 주소를 참조해서 4바이트 만큼(int) 읽어온다. ex) double * num => num에 저장된 주소를 참조해서 8바이트 만큼(double) 읽어온다.
C언어 포인터
2022. 5. 22. 15:14