378
2016-02-16 13:55:21
0
int *a[] = {0, /* 0이후는 의미없음*/ 2,4,8,16};
//double *a[] = {5, /* 이후 의미없음*/ 2,4,8,16};
/* a = **주소
*a = &a[0] 같음
a의 형은 int, 즉 포인터로 증감하면 4씩 증감됨
(*a) = 0x0000 번지
(*a+0) 출력하면 decimal 0x0000
여기에 +1 하면 4바이트 증가됨 그래서 0x0004
(*a+1) = 0x0004 주소값,을 decimal로 출력하면 그냥 4
....... 그냥 8 그냥 12 그냥 16.. 이렇게 증가됨..
int *a[] = {5, 6, 7, 8, 9} 로 선언하면 5만 사용하게 되고
5로 시작해서 4씩 증가됨..
4바이트 형으로 선언하지 않고 8바이트형으로 선언하면 8씩 증가됨.
역시 배열의 값은 첫번째 값만 사용됨
*/
printf("%p %p %p %pn", a, &a[0], (a+0), (*a+0));
printf("%p %p %p %pn", a, &a[1], (a+1), (*a+1));
printf("%p %p %p %pn", a, &a[2], (a+2), (*a+2));
printf("%p %p %p %pn", a, &a[3], (a+3), (*a+3));
printf("%p %p %p %pn", a, &a[4], (a+4), (*a+4));
printf("arr0=%dn", *a+0);
printf("arr1=%dn", *a+1);
printf("arr2=%dn", *a+2);
printf("arr3=%dn", *a+3);
printf("arr4=%dn", *a+4);
printf("arr0=%dn", (int *)(*a+0));
printf("arr1=%dn", (int *)(*a+1));
printf("arr2=%dn", (int *)(*a+2));
printf("arr3=%dn", (int *)(*a+3));
printf("arr4=%dn", (int *)(*a+4));