1 개념[ | ]
- 포인터와 배열의 차이
2 형태[ | ]
- int a[n]
- int *pa
3 포인터와 배열의 의미[ | ]
- int a[n]
- → 정수형 변수 a가 n개
a[0] a[1] a[2] ......... a[n-1]
- int *pa
- → pa 주소방 1개
pa
4 포인터와 배열의 크기[ | ]
C
Copy
#include <stdio.h>
int main()
{
int a[10];
int *pa;
printf("%lu\n", sizeof(a[0])); // 4
printf("%lu\n", sizeof(a)); // 40
printf("%lu\n", sizeof(pa)); // 8
return 0;
}
- →sizeof(a[0])는 int 배열 하나의 크기를 의미 하므로 4바이트임
- →sizeof(a)는 int a[10] 배열 전체 크기를 의미 하므로 40바이트임
- →sizeof(pa)는 포인터 (주소방) 기본 크기를 의미 하므로 8바이트임 (주소방 크기는 본인의 시스템에 따라 4바이트 혹은 8바이트로 다를 수 있음)
5 값 할당 및 출력[ | ]
배열은 선언 시 공간이 이미 할당되나 포인터는 단지 포인터 주소방만 생성됨. 따라서 malloc()으로 메모리 공간을 따로 만들어 주어야함.
- 배열
C
Copy
#include <stdio.h>
int main()
{
int a[10];
int i;
for (i = 0; i < 10; i++) {
a[i] = i;
}
for (i = 0; i < 10; i++) {
printf("%d\n", a[i]);
}
return 0;
}
0 1 2 ......... 9
- 포인터
C
Copy
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *pa;
int i;
pa = (int *)malloc(sizeof(int)*10);
for (i = 0; i < 10; i++) {
*(pa + i) = i;
}
for (i = 0; i < 10; i++) {
printf("%d\n", *(pa + i));
}
return 0;
}
pa
- ↓
0 1 2 ... 9
6 같이 보기[ | ]
편집자 John Jeong Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.