728x90
반응형
# include <stdio.h>
int main()
{
int arr[5] = {100,200,300,400,500};
int *ptr1,*ptr2,*ptr3;
ptr1 = arr; //배열은 그 자체가 주소처럼 작동하기 때문에 &(앰퍼샌드)생략
printf("%p %p %d %p\n",ptr1,arr,*ptr1,&ptr1); //대입한 배열의 주소, 배열의 주소, 데이터의 값, 포인터 자체의 주소.
ptr2 = &arr[2]; // 배열의 index는 0부터 시작. 실제로는 3번째 값인 300
printf("%p %d %p\n",ptr2,*ptr2,&ptr2); // 대입한 배열arr[2]의 주소, 값, 포인터 변수 ptr2의 주소
ptr3 = ptr1+4; //단순한 4byte를 더하는 것이 아니라 4byte값이 4번 더하는 값을 더한다. arr[0] + 4 = arr[4]
printf("%p %d %p\n",ptr3,*ptr3,&ptr3); // 대입한 배열의 주소, 값, 포인터 변수 ptr3의 주소
printf("%td\n",ptr3-ptr1); // %t 가 들어가는 경우 pointer의 차이를 출력할 때 사용한다.
// 4
//증감연산자
ptr1++; // 후위는 ptr1을 먼저 사용하고(선언)? 하고 증감연산을 한다.
ptr1--; // 전위는 먼저 증감연산을 하고 선언이나 사용,대입을 한다.
--ptr1;
++ptr1;
//포인터끼리의 비교
if(ptr1==ptr3)
printf("같다.\n");
else
printf("ptr1과 ptr3는 같지 않다.\n");
//비교도 가능하지만 ptr의 자료형이 현재는 integer지만 다른 자료형의 포인터 변수와는 비교가 불가능. 하고싶다면 형변환 하고 비교 가능.
}
출처 : 인프런 홍정모의 따라하며 배우는 c언어
728x90
반응형
최근댓글