#include <stdio.h>
int main(void) {
int i = 10;
char c = 69;
float f = 12.3;
printf("i의 주소 : %u\n", &i); //변수 i의 주소 출력
printf("c의 주소 : %u\n", &c); //변수 c의 주소 출력
printf("f의 주소 : %u\n", &f); //변수 f의 주소 출력
return 0;
}
int i* p;
이는 정수를(int)가리키는(*)포인터(p)
int i = 10; // 정수형 변수 i 선언
int*p; // 포인터 변수 p 선언
p=&i; // 변수 i의 주소가 포인터 p로 대입
int*p=&i // 위의 두 줄을 한줄로 표현
예제)
#include <stdio.h>
int main(void) {
int i = 10;
double f = 12.3;
int* pi = NULL;
double* pf = NULL;
pi = &i;
pf = &f;
printf("%u %u\n", pi, &i);
printf("%u %u\n", pf, &f);
return 0;
}
int i =10;
int*p;
p=&i;
printf("%d",*p);
int*p=8; //위치 8에서 정수를 읽는다.
char*pc=8; // 위치 8에서 문자를 읽는다.
double*pd=8; // 위치 8에서 실수를 읽는다.
int*p=NULL;
#include <stdio.h>
int main(void) {
char* pc;
int* pi;
double* pd;
pc = (char*)10000;
pi = (int*)10000;
pd = (double*)10000;
printf("증가 전 pc = %d, pi = %d,pd = %d\n", pc, pi, pd);
pc++;
pi++;
pd++;
printf("증가 후 pc = %d, pi = %d,pd = %d\n", pc, pi, pd);
printf("pc+2 = %d, pi+2 = %d,pd+2 = %d\n", pc, pi, pd);
return 0;
}
#include <stdio.h>
int main(void) {
int i = 10;
int* pi = &i;
printf("i=%d, pi=%p\n", i, pi);
(*pi)++; /*pi가 가리키는 위치의 값을 증가*/
printf("i=%d,pi=%p\n", i, pi);
printf("i=%d, pi=%p\n", i, pi);
*pi++; /*pi가 가리키는 위치에서 값을 가져온 후에 pi를 증가*/
printf("i=%d,pi=%p\n", i, pi);
return 0;
}
예제 2)
#include <stdio.h>
int main(void) {
int i = 10;
int v = 0;
int* p = &i; // 변수 i의 주소를 포인터 p에 대입
printf("i=%d,v=%d, p=%p\n\n", i, v,p);
v = *p++; // p가 가리키는 값을 v에 대입한 후에 p를 증가
printf("i=%d,v=%d, p=%p\n\n", i, v, p);
p = &i, v = (*p)++; //p가 가리키는 값을 v에 대입한 후에 가리키는 값을 증가
printf("i=%d,v=%d, p=%p\n\n", i, v, p);
p = &i, v =*++p;//p를 증가시킨 후에 p가 가리키는 값을 v에 대입
printf("i=%d,v=%d, p=%p\n\n", i, v, p);
p = &i, v = ++*p; // p가 가리키는 값을 가져온 후에 그 값을 증가하여 v에 대입
printf("i=%d,v=%d, p=%p\n\n", i, v, p);
return 0;
}
예제)
#include <stdio.h>
void swap(int x, int y);
int main(void)
{
int a = 100, b = 200;
printf("a=%d b=%d\n", a, b);
swap(a, b);
printf("a=%d b=%d\n", a, b);
return 0;
}
void swap(int x, int y) {
int tmp;
printf("x=%d y=%d\n", x, y);
tmp = x;
x = y;
y = tmp;
printf("x=%d y=%d\n", x, y);
}
#include <stdio.h>
int main(void)
{
int a[] = { 10,20,30,40 };
printf("&a[0]=%u\n", &a[0]);
printf("&a[1]=%u\n", &a[1]);
printf("&a[2]=%u\n", &a[2]);
printf("a=%u\n", a);
return 0;
}