C程序指针指向多维表
以下代码在屏幕上打印“1”。我的问题是关于评论行。我以为ptr是第一个元素a[0][0]的地址,所以*p已经是1的值了, 我错在哪里?对于多维表的地址,有人能推荐一些教程吗?我总是很困惑。提前谢谢C程序指针指向多维表,c,pointers,multidimensional-array,C,Pointers,Multidimensional Array,以下代码在屏幕上打印“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];
#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);
}
#包括
虚无乐趣(整数**p);
int main()
{
inta[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]
乐趣(ptr);
返回0;
}
虚无乐趣(整数**p)
{
printf(“%d\n”,**p);
}
指针是一个变量,它保存另一个变量的内存位置
所以ptr是一个指针,它指向变量a[0][0]的地址,变量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
在函数中
void fun(int **p)
它将地址作为参数,指针p将该地址作为参数,即;指向指针的指针
p指向ptr的地址,其中ptr指向地址a[0][0]。因此,预期输出应该是1
有关指针和数组的更多信息,请参阅此链接:
似乎很少有人再使用/理解基本指针了,也就是说,在声明int a[3][4]之后只使用“a”……你没有错。输出为1,这是您所期望的。您正在将指针的地址
ptr
发送到函数fun()
,因此要获得值,必须将其解引用两次,这就是您所做的。你认为你错在哪里<代码>p是双指针<代码>*p=ptr
=&a[0][0]
,和**p
=*ptr
=*&a[0][0]
=1
@Vinay我知道我错在哪里了。正如你所说,我发送了ptr的地址,但我忽略了这个地址。非常感谢。
void fun(int **p)