iT邦幫忙

DAY 8
7

C++ 指標 30日系列 第 8

C++ 指標 30日(8)

  • 分享至 

  • xImage
  •  

指標就在前方不遠處...


今日主題:二維陣列(續)

二維陣列的第1列啟始位址為x[0],以下分別代表著:(易混淆)

x[0]+1 : 第一列第2個元素位址
x+1 : 第二列第一個元素位址

請看程式碼:

#include <stdio.h>
#include <string.h>

main()
{
   int x[2][3] = {1,2,3,4,5,6};
   int i, j;
   
   for(i = 0; i < 2; i++){
       for (j = 0; j < 3; j++){
           printf("&x[%d][%d] = %p\n", i, j, &x[i][j]);
       }        
   }
   
   printf("x[0]+1 = %p\n", x[0]+1);

   printf("x+1 = %p\n", x+1);
}

結果如下:

&x[0][0] = 0x7fffe810e3a0
&x[0][1] = 0x7fffe810e3a4
&x[0][2] = 0x7fffe810e3a8
&x[1][0] = 0x7fffe810e3ac
&x[1][1] = 0x7fffe810e3b0
&x[1][2] = 0x7fffe810e3b4
x[0]+1 = 0x7fffe810e3a4
x+1 = 0x7fffe810e3ac

鐵人文總整理


上一篇
C++ 指標 30日(7)
下一篇
C++ 指標 30日(9)
系列文
C++ 指標 30日26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
海綿寶寶
iT邦大神 1 級 ‧ 2013-09-23 14:08:02

ted99tw提到:
x+1 : 第二列第一個元素位址

那 x+2 不就超出陣列範圍了
疑惑

總裁 iT邦好手 1 級 ‧ 2013-09-23 14:40:27 檢舉

所以....要小心....汗

ted99tw iT邦高手 1 級 ‧ 2013-09-23 15:07:30 檢舉

總裁說得對...謝謝

0
pajace2001
iT邦研究生 1 級 ‧ 2013-09-23 14:26:29

#include <stdio.h>
#include <string.h>

為什麼C++要 include <string.h> 不是指要 include <string> 就好了嗎?

ted99tw iT邦高手 1 級 ‧ 2013-09-23 15:12:14 檢舉

是的,C++只要 include <string>。

其實那行是多餘的,因為尚未用到<string.h>字串功能,例如:strlen(),strcomp(),所以刪掉也可。
謝謝

總裁 iT邦好手 1 級 ‧ 2013-09-23 16:05:29 檢舉

這是語法問題
#include <aaa>
#include "aaa.h"

我要留言

立即登入留言