C程序指针指向多维表

时间:2014-04-09 05:45:23

标签: 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]; // *ptr = *&a[0][0]=a[0][0]
    fun(&ptr);
    return 0;
}
void fun(int **p)
{
    printf("%d\n", **p);
}

1 个答案:

答案 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