簡體   English   中英

C程序指針指向多維表

[英]C programme pointer point to multiple-dimension table

下面的代碼在屏幕上打印“ 1”。 我的問題是關於注釋行。 我以為ptr是第一個元素a [0] [0]的地址,所以* p已經是1的值,我在哪里錯? 多維表的地址,有人可以建議一些教程嗎? 我總是很困惑。 提前致謝。

#include<stdio.h>
void fun(int **p);

int main()
{
    int a[3][4] = {1, 2, 3, 4, 4, 3, 2, 8, 7, 8, 9, 0};
    int *ptr;
    ptr = &a[0][0]; // *ptr = *&a[0][0]=a[0][0]
    fun(&ptr);
    return 0;
}
void fun(int **p)
{
    printf("%d\n", **p);
}

指針是一個變量,該變量保存着另一個變量的存儲位置。所以ptr是一個指針,它指向變量a [0] [0]的地址(即1),因為a [3] [4] = {1,2,3, 4、4、3、2、8、7、8、9、0};

 ptr = &a[0][0];

這是第一行的第一個元素(因為a [] []是二維數組)

fun(&ptr);

函數fun傳遞指針ptr的地址

在功能上

void fun(int **p)

它以地址作為參數,而指針p以該地址作為參數,即; 指向指針的指針

p指向ptr的地址,其中ptr指向地址a [0] [0]。 因此,預期輸出應為1

有關指針和數組的更多信息,請參見以下鏈接: http : //pw1.netcom.com/~tjensen/ptr/pointers.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM