포인터
주소를 저장하는 변수입니다.(바이트수:4)
형식: 자료형 *포인터변수명
자료형은 포인터변수와 연결될변수와 같아야합니다.
1 2 3 4 5 6 7 8 | #include<stdio.h> int main(void){ int a = 10; int *pa; //포인터변수 선언 pa = &a; //포인트변수에 변수의주소를 넣어주는 return 0; } | cs |
위와같이 사용할수 있습니다.
소스코드↓
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<stdio.h> int main(void){ int a = 0; int b = 10; int *ptr; ptr = &a; b = *ptr; printf("변수a의주소:%p\n", a); printf("ptr의값:%p\n", ptr); printf("*ptr의값:%d\n", *ptr); printf("b의값:%d\n", b); } | cs |
※%p는 주소를 나타낼때쓰는 서식문자입니다.
결과값은
변수a의주소:0xa의주소
ptr의값:위와같음
*ptr의값:0
b의값:0
이렇게됩니다.
※*ptr과ptr의 다른점
ptr은 a의주소를넣었으니 a의주소를 나타내고
*ptr은 a의주소의값을 의미합니다.
포인터와배열
배열의주소는 자료형의 바이트수씩 차이가납니다.
예로 int a[3];이있고 첫번째주소가 100이라면
100 | 104 | 108 |
위와같이 int(4바이트)이니 4씩차이가납니다.
배열을 포인터로 나타내는법
int a[5];가있다면
a[1] = *(a+1) a[2] = *(a+2) a[3] = *(a+3) a[4] = *(a+4)
배열의이름은 그자체로 주소를 나타내게됩니다. 따라서 a+1의값은 a[1]과같은 값입니다.
배열의주소 출력
1 2 3 4 5 6 7 8 9 | #include<stdio.h> int main(void){ int a[5] = {1, 2, 3, 4, 5}; int *ptr; int i; for (i = 0;i<5;i++){ printf("배열의 값:%d, 배열의 값:%d", a[i], *(a+i)); } | cs |
이렇게 쓸수있습니다.
여기서 블로그포스팅을 마치도록 하겠습니다.
포인터 -끝-