iT邦幫忙

DAY 23
8

C++ 指標 30日系列 第 19

C++ 指標 30日(23)

  • 分享至 

  • xImage
  •  

衝啊!pointer!


今日主題:指向陣列的指標

*arr[4]和(*arr)[4]所表示的意義是不同的。

*arr[4]在之前已討論過,而(*arr)[4]是指向陣列的指標(pointer to array),表示arr是一個指標,指向一個具有4個元素的陣列,也相當於:

arr[ ][4] (因為 * 和 [ ] 是互通的)

請看程式碼:

#include <stdio.h>

main()
{
    int arr[][3] = {100,200,300,400,500,600};
    int (*ptr)[3];
    int i, j;
    
    ptr = arr;
    
    for (i = 0; i < 2; i++){
        for (j = 0; j < 3; j++){
            printf("ptr[%d][%d] = %d\n", i, j, *(*(ptr+i)+j));
        }
    }    
}

結果如下:

ptr[0][0] = 100
ptr[0][1] = 200
ptr[0][2] = 300
ptr[1][0] = 400
ptr[1][1] = 500
ptr[1][2] = 600

鐵人文總整理


上一篇
C++ 指標 30日(22)
下一篇
C++ 指標 30日(24)
系列文
C++ 指標 30日26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
總裁
iT邦好手 1 級 ‧ 2013-10-08 14:26:34

她為什麼不會這樣放呢??...疑惑
ptr[0][0] = 100
ptr[1][0] = 200
ptr[2][0] = 300
ptr[3][0] = 400
ptr[4][0] = 500
ptr[5][0] = 600

ted99tw iT邦高手 1 級 ‧ 2013-10-08 14:47:41 檢舉

因為arr是列數未知,但行數為3的陣列

&lt;pre class="c" name="code">int arr[][3] = {100,200,300,400,500,600};  

謝謝

總裁 iT邦好手 1 級 ‧ 2013-10-08 15:26:22 檢舉

那如果宣告成這樣,會像我說的那樣放嗎??還是從第二維開始放??

int arr[][]

ted99tw iT邦高手 1 級 ‧ 2013-10-08 15:40:58 檢舉

若要變成一維(6列1行),以下宣告會產生總裁說的結果:

&lt;pre class="c" name="code">
int arr[][1]

謝謝

我要留言

立即登入留言