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]

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글이 없습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/152

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/152

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/152

트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/trackback/152

트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/trackback/152

댓글을 달아 주세요

댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/152
댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/152
[로그인][오픈아이디란?]