指標就在前方不遠處...
今日主題:指標與陣列
指標代表位址,陣列名稱代表第一個元素位址,指標可以++,但陣列名稱不能++,因為陣列名稱地位相當於字串常數。
請看程式碼:
#include <stdio.h>
main()
{
int arr[3] = {100,200,300};
int *ptr = arr;
int i;
for (i = 0; i < 3; i++){
printf("&arr[%d] = %p\n", i, &arr[i]);
printf("arr+%d = %p\n", i, arr+i);
printf("arr[%d] = %d\n", i , arr[i]);
printf("*(arr+%d) = %d\n", i, *(arr+i));
}
}
結果如下:
&arr[0] = 0x7fffa5403ac0
arr+0 = 0x7fffa5403ac0
arr[0] = 100
*(arr+0) = 100
&arr[1] = 0x7fffa5403ac4
arr+1 = 0x7fffa5403ac4
arr[1] = 200
*(arr+1) = 200
&arr[2] = 0x7fffa5403ac8
arr+2 = 0x7fffa5403ac8
arr[2] = 300
*(arr+2) = 300
請教兩點
以上例而言
1.如果取用 arr[3] 會不會出現 index out of bound 的錯誤
2.如果取用 *(arr+3) 是不是不會出現錯誤
可能會根據compiler不同而異,若不報錯,則:
arr+3:位址會直接加4
*(arr+3) :結果未定
ptr怎麼都沒用到??...
偷懶被抓包了...
討厭的PTR.....
不要亂指啦....你指到我後面了啦...前面前面才對啦!!