答:就是一个指针,只不过这个指针指向一个数组



什么?还能指向一个数组??没错,你没有看错,的确可以用一个指针指向一个数组,或者,我们也可以叫它为行指针


比如我们,定义一个数组指针,如下:

int (*p)[10];

大家注意看它的写法,因为小括号优先级高的原因,所以p本身是指针的属性,指向的是一个有10个整型元素的一个数组,即所谓的行指针。那么它怎么用,如何用呢,下面给大家代码理解:

#include<stdio.h>
int main()
{
    int (*p)[10];
    int a[10]={1,2,3,4,5,6,7,8,9,0};
    p=&a;
    printf("%d\n",*(*(p+0)+1));
    printf("%d\n",p[0][3]);
    return 0;
}

大家可以看到我首先定义了一个行指针p,然后定义了一个一维数组a,然后将p指向了a数组,这就是行指针指向了一行数组,类型都是整型,都是有10个元素,因此类型一致。那么注意后面的两个printf,都是通过p来输出数组a当中的两个元素,大家可以看到,都是用到了二维的数组的形式输出,为什么可以呢?原因就在于p是行指针,每次加1也就意味着加一行,因此如果用p来输出a元素的值,需要两个"降级"才可以,就会有这样的写法,请大家上机试验,反复理解


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)