#include <stdio.h>
int main() {
int a[][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int **p = &a;
while (*p) {
while (**p) {
if (*((*p)+1) == 2) {
printf("ok");
return 0;
} else {
printf("not ok");
return 0;
}
}
p++;
}
return 0;
}
a我们可以当做是一个地址而&a之后意思是将数组a的地址取出赋值给二级指针p不是吗
二级指针的意思就是指针的指针 也就是一个地址的地址。这个怎么解释?
你要是这样理解的话,你的p就只能是一个void*类型的指针了,然后你自己控制指针的位移;而且我要提醒你:“二级指针的意思就是指针的指针 也就是一个地址的地址”——归根结题是一个地址,你用一个int**来指向编译器会傻掉的。。
有试过 不行 呵呵
追答是赋值不能,直接报错,还是运行结果不对呢
追问我在netbeans下运行的 直接提示运行失败 没有编译错误
追答int **p=(int **)a;