[英]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.