int arr[10];
int *arrp = arr;
에서 배열과 포인터의 차이점은
1. arr에 다른 값을 대입할 수 없다. arrp는 다른 값을 대입 할 수 있다.
2. sizeof(arr)과 sizeof(arrp)가 서로 다른 값을 가진다.
32 bit 시스템에서 sizeof(arr)은 4*10인 40 byte 이고 sizeof(arrp)는 4 byte이다.
[code type=c]#include <stdio.h>
int main(void)
{
int arr0[7] = {0, 1, 2, 3, 4, 5, 6};
int *arrp;
int i;
arrp = arr0;
for ( i = 0; i < 7; i++ )
{
printf("%d %d %d %d %d\n", arrp[i], *(arrp+i), *(i+arrp), i[arrp], (i+2)[arrp-2]);
/* []는 연산자이다. arrp[i] == *(arrp + i) == *(arrp +i*sizeof(*arrp)) 이다. 때문에 arrp[i] == i[arrp] == (i+2)[arrp-2]
*/
}
printf("\n");
arrp = &arr0[3];
printf("arrp[1]:%d\n", arrp[1]);
printf("arrp[-2]:%d\n", arrp[-2]);
{
int i;
char *cp = &i;
short *sp = &i;
int *ip = &i;
printf("%x\t %x %x %x\n", &i, cp+1, sp+1, ip+1);
/* cp + 1 == cp + 1*sizeof(*cp)
* sp + 1 == sp + 1*sizeof(*sp)
* ip + 1 == ip + 1*sizeof(*ip)
*/
}
return 0;
}[/code]
받은 트랙백이 없고,
댓글이 없습니다.



글
댓글을 달아 주세요
댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/152댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/152