#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
typedef int mytype[2][3];
mytype **ipp;
int main()
{
int tab[2][3];
mytype *pointer;
pointer = &tab;
ipp = &pointer;
(*pointer)[0][3] = 2;
int myint = (*pointer)[0][3];
printf("%d\n",myint);
receiver();
return 0;
}
void receiver()
{
int myint1 = (**ipp);
printf("%d\n",myint1);
}
我试图指向一个2D数组的指针并在给定位置打印该值。我能够做到这一点但我不知道当我指向这个指针的指针时如何打印相同的值。有人可以帮我吗?我是双指针的新手。在此先感谢!!
答案 0 :(得分:1)
它是一个双指针(id='BS'
)。因此,您需要将其取消引用两次才能进入二维数组。在mytype **
receiver()
这将正确打印该值。您之前分配的是int myint1 = (**ipp)[0][3];
printf("%d\n",myint1);
变量int
。编译器抛出[错误:从int(*)[3]
无效转换为'int (*)[3]'
]的错误(为了让您了解此'int'
的来源 - 二维数组衰减为指向第一个元素的指针 - 这是一个指向3个int(*)[3]
元素数组的指针 - int
)。