help看看这道c++的指针题

img


咋写的呀能解释一下嘛,有的搞不懂,指针没学明白,顺便有没有推荐的网课啥的

这是指针数组和数组指针的一个知识点,你可以去百度理解这个知识点。
除此之外,数组的初始化你也了解一下,如果在声明时不指定数组大小,应该怎么做?
你可以试着把二级数组转换成一级数组,用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
}

唉,我也感觉这玩意没啥用,不是说指针没啥用,是这种复杂的指针数组之类的没啥用,我现在都没太搞明白,程序开发也没啥影响,搞懂一级指针二级指针,会用指针传参,分配内存,类或结构体自引用基本就没问题了。而且指针传参大都可以用引用代替。