以下代码在屏幕上打印“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);
}
答案 0 :(得分:1)
指针是一个变量,它保存另一个变量的内存位置 所以ptr是一个指向变量a [0] [0]的地址的指针,它是1 因为a [3] [4] = {1,2,3,4,4,3,2,8,7,8,9,0};
ptr = &a[0][0];
这是第一行的第一个元素(因为[] []是二维数组)
fun(&ptr);
函数 fun 传递指针的地址 ptr
在功能
中void fun(int **p)
它将地址作为参数,指针 p 将该地址作为参数,即;指向指针的指针
指向ptr的地址,其中ptr指向地址a [0] [0]。所以预期的输出应该是1
有关指针和数组的更多信息,请参阅以下链接: http://pw1.netcom.com/~tjensen/ptr/pointers.htm