본문 바로가기

소프트웨어/C언어

C언어를 독파하자 - 포인터의 이해

문제1] 다음 프로그램 실행 시 포인터와 변수와의 관계를 나름대로 그림을 그려서 설명해 보자
 



#include<stdio.h>

int main(void)
{
 int n=10;
 int* p1=&n;
 int* p2=p1;

 printf("%d \n",(*p1)++); //*p1++에서 *를 빼고 하면 주소값 출력
 printf("%d \n",(*p2)++);
 printf("%d \n",n);

 return 0;
}

결과

 


 


문제2] char형 변수 a, int 변수 b, double 변수 d, 이렇게 총 4개의 변수를 선언하자 ( 초기값 임의대로) 그 다음 포인트 p1,p2,p3,p4를 이용해서 a,b,c,d의 값을 1씩 증가시킨다. 즉 간접접근방식에 의해서 값을 하나 증가시키라는 뜻이다. 
 



#include<stdio.h>

int main(void)
{

 char a='i'; int b=1; float c=2.0; double d=3.0;
 char* p1=&a;
 int* p2=&b;
 float* p3=&c;
 double* p4=&d;

 *p1+=1; *p2+=1; *p3+=1; *p4+=1;

 printf("%c \n",a);
 printf("%d \n",b);
 printf("%f \n",c);
 printf("%f \n",d);
 

 return 0;
}

결과