728x90 반응형 C/기말고사 대비(2022 1학기)14 22/05/09 포인터 스터디 정리 제일 중요한거 arr=&arr[0] &arr+i=&arr[i] *(arr+i)= arr[i] 사실상 *(&arr[0]+i)라 봐도 무방함 1번 1 2 3 int arr[3]={1,2,3}; int *ptr=arr; cs 이때 arr==ptr은 성립하지 않는다 그러나 arr=&arr[0]이고 ptr=&arr[0]인건 맞음 arr==ptr인것은 배열 포인터에서만! 2번,3번 int *ptr=arr; *ptr+=2; --> *(&arr[0])+=2 즉 arr[0]의 값에 2를 더하겠다는것 ptr++; --> ptr+1 == &arr[0]+1==&arr[1] 그래서 ptr은 arr[1]을 가리킨다. *(ptr+i) == *(&arr[0]+i)==*(arr+i)==arr[i] 4번 출력값을 생각해보자. 1번) &.. 2022. 5. 9. [C언어] 포인터 & 변수의 메모리 주소를 구할 때는 &(주소 연산자)를 붙이면 된다. 포인터 변수 선언 c언어에서 메모리 주소는 포인터 변수에 저장한다. 포인터 변수는 *를 사용하여 선언하는데 자료형 *포인터이름; 포인터 = &변수; 꼴이다. 즉 numPtr은 10이 저장된 메모리의 공간, num1이 있는 공간을 가리킨다. 그렇다면 역참조도 해보자. *numPtr은 numPtr이 가리키는 값을 물어보는 것이다. 그럼 numPtr은 num1의 주소값이고 주소값이 가리키는 건 10이다. 그래서 10이 출력된다. 정리하자면 역참조는 주소에 접근하여 값을 가져온다. 이렇게 하면 둘다 20이 출력된다. numPtr은 num1의 주소값을 가지고 있고 *numPtr은 num1을 가리키는데 num1의 값이였던 10을 20으로 바꿔버린.. 2022. 5. 3. 이전 1 2 3 4 다음 728x90 반응형