为什么我不能取消引用多维数组的指针?

时间:2012-03-23 00:59:00

标签: c

基本问题..不得不问。任何帮助将不胜感激。

问:为什么我不能取消引用指向多维数组的指针,如下所示:

int arr [2][2] = { {1, 2} , {3, 4} };

printf("%d ", *arr); 

4 个答案:

答案 0 :(得分:3)

可以取消引用它,只是结果不符合您的期望:*arr不是int,它是指向int 的指针(好的,一维数组)。如果您想要查看1,请添加另一个星标:

printf("%d ", **arr);

答案 1 :(得分:1)

尝试:

int arr [2][2] = { {1, 2} , {3, 4} };

printf("%d ", **arr); 

您需要两个级别的解除引用,因为您的数组是二维的。

答案 2 :(得分:1)

如果aint[][],则*aint[]。您需要另一级别的重定向来访问数组元素。也就是说,**aint

答案 3 :(得分:0)

请记住,如果我们定义一个as int [] [],那么它意味着它是一个二维数组,它可以被** a解引用。如果数组是一维的,那么我们应该使用* a来取消引用它......

试试..