眼部整形

首页 » 常识 » 问答 » C语言数组和指针
TUhjnbcbe - 2025/1/13 21:26:00

数组(Array)

可以理解为相同类型数据的集合,数组的索引(index)从0开始,n个元素的数组索引从0~n-1,数组符号方括号([]),里面的数值定义了数组的元素个数。

下面是源码,一维数组、二维数组的定义和初始化(为了显示,打印格式进行了控制)。在内存中数组不管多少维都是线性存储的,内存地址是递增的。对于数组可以从几何的角度更好的理解,一维数组就是一条线,一行数据,每个元素都是一列,而二维数组是由一维数组构成的矩阵(长方形),每行都是一个一维数组,依次类推,那三维数组就可以看成是二维数组叠加而成的立方体,比如arr[5][6][7],由5个6行7列的二维数组叠加。

数组

源码运行结果,数组可以指定某个元素初始值,未指定默认为0(定义一个数组最好是初始化为了代码安全),注意提示需要加C99标准编译。

数组运行

指针(Pointer)

指针变量保存的是数据存储的地址。*间接引用,‘*’的优先级小于‘[]’。

截图C99标准

a是int类型,inta;b是int类型指针,int*a;c是指针数组,int*a[3],[]符号优先级高,先看a[3]是数组,int*整形指针;d是数组指针,int(*a)[3],()符号优先级高,(*a)是指针,指向有三个元素的整形一维数组;e是指向可变长度数组的指针,int(*a)[](其实和d一样,在二维数组可以当做行指针,一个累加就是一行);f是没有参数说明的函数返回指向int的指针;g是函数指针;h是函数指针数组(const常量),每个指针都有一个unsignedint类型的参数,未指定参数数量(在声明不确定形参的时候可以使用‘…’代替,参照printf);int*(*)()是函数指针,返回值是int指针;如下图,指向指针的指针:intData为数据变量,int*p_Data为指针,int**pp_Data为二级指针;

指向指针的指针
1
查看完整版本: C语言数组和指针