1.数组
定义,类型名+变量名[num]={};
例如:
没有给定值会默认是值为0,假如只给了十个值,那剩下的也会补0,也可以这样去定义:
可以不声明数组的长度,但后面必须有的具体值,编译器会根据你给的值来给定数组的长度,上面这种长度为4个整型,每隔整型占有4个字节,所以把arr占有16个字节。
2.当数组类型为char时
定义char类型的数组,可以像这样char name[20]={“banana”};。也可以像char name[]="abcdf";,或者char name[]={"abcde"};,但是这样写要注意,没有定义数组长度时,字符串后面会多出一个\0,数组的长度会是原来的长度加1,如下:
可以看到arr_length=7,char类型每个元素占一个字节,abcdef+\0正好是7个字节;
还有需要注意的是,以下这样的写法,[]中的值必须是常量,可以使用宏定义#define来定义一个常量,但不可以用const,程序会报错variable-sized object may not be initialized,不能使用变量来定义数组长度,切记。下面是示例:
3.二维数组
定义数组:arr[5][5]={0};
可以理解为一个矩阵,第一行,第二行,第三行组成一个一维数组,第一行中的元素又组成一个一维数组,以此类推;
想要打印二维数组中的值;就可以使用循环嵌套,外层循环列,内层循环行,如图;
4.指针数组
简单说就是存放指针的数组,本质就是一个数组,例子:
运行结果如下:
这三个值分别就是a,b,c,的地址。
最后,再说数组名实际上就是一个地址,它的地址就是数组中第一个元素p_a的地址,也即a的地址,它和指针有很大的联系与应用,后面说指针的时候会再次用到数组。下面是验证:
运行结果:
可以看到,&p_arr[0]与p_arr的地址相同。