0
以下代码在屏幕上打印“1”。我的问题是关于评论栏。我以为ptr是第一个元素a [0] [0]的地址,所以* p已经是1的值, 我在哪里错了?对于多维表的地址,有人可以提供一些教程吗?我总是困惑。提前致谢。C程序指针指向多维表
#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);
}
好像很少有人使用/理解*基址指针*了,那就是,只是“一个”声明后, int a [3] [4] ... – RobP
你没有错。输出是1,这是你的预期。您正在将指针'ptr'的地址发送到fun()'函数,所以为了获得价值,您必须将其解除引用两次,这就是您所做的。你认为你错在哪里? 'p'是双指针。 '* p' ='ptr' ='&a [0] [0]',和'** p' ='* ptr' ='*&a [0] [0]'='a [0] [0] '='1' – Vinay
@Vinay我看到我错了。就像你说的那样,我发送ptr的地址,这个地址已经被我省略了。谢谢! –