这是指针数组和数组指针的一个知识点,你可以去百度理解这个知识点。
除此之外,数组的初始化你也了解一下,如果在声明时不指定数组大小,应该怎么做?
你可以试着把二级数组转换成一级数组,用int * a[3];去测试一下指针数组,和数组指针的逻辑。
我在调测你的代码的时候,也发现有点问题,然后下面是我调试过程:
int main()
{
//数组指针和指针数组你了解一下,然后可以通过简单实例去理解
const char* a[] = { "Pascal", "C language", "dBase", "Coble" }; //字符串数组 a是字符串数组的首地址(指针) 可以理解为是二级数组的起始地址
const char** p; //这里表示的是想存储一个指针类型的变量 要定义存储指针的数组,需要依次进行大小定义以及初始赋值的
p = a + 3; //这里指针的+1,是按照a的类型进行+1的,比如换成int类型你试试,就是加int大小的地址位,,,
for (int j = 3; j >= 0; j--)
{
printf("%s \n", *(p--)); //这里是使用指针的方式 打印了数组中的值
}
return 0;
//输出Coble\n dBase \n C language\n Pascal\n
}
唉,我也感觉这玩意没啥用,不是说指针没啥用,是这种复杂的指针数组之类的没啥用,我现在都没太搞明白,程序开发也没啥影响,搞懂一级指针二级指针,会用指针传参,分配内存,类或结构体自引用基本就没问题了。而且指针传参大都可以用引用代替。