2013年5月9日 星期四

c pointer + 1

指標 +1 的時候到底是加了多少呢?書上有寫, 但有時候這個指標的 type 並不是那麼直覺。

address+1.c
 1 #include <stdio.h>
 2 
 3 int main( )
 4 { 
 5   char buf[3];
 6   printf("buf : %p\n",buf);
 7   printf("&buf : %p\n",&buf);
 8   printf("buf+1 : %p\n",buf+1);
 9   printf("(&buf)+1 : %p\n",(&buf)+1);
10   return 0;
11 } 

buf : 0xfff6966d
&buf : 0xfff6966d
buf+1 : 0xfff6966e (加了 1)
(&buf)+1 : 0xfff69670 (加了 3)

雖然 buf, &buf 位址一樣, 但 +1 之後的行為是不一樣的, 一個一樣 +1; 另外一個卻加了整個 array 的大小, 3 bytes。

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。