一 数组
1 一维数组
(1)定义
数据类型 数组名[元素个数]
其中 数组元素个数只可以是整型即5,或者整型表达式如5+4;
另外 数组元素个数的数据类型只可以是整型和字符型。
调用方法:可以直接用下标a[0],也可以用指针 *a。
(2)数组指针
正牌军
定义方法:int (*a)[10]; int b[10];
赋值方法:a = &b;
杂牌军
int *a; int b[10];
a = b;
(3)指针数组
定义:数据类型 *数组名[元素个数];或 数据类型 *(数组名[元素个数]);
常用使用:在指针数组中存放字符串组
(4)函数传参
void get_dat(int a[]); int dat[10];
get_dat(dat);注:它并非将数组传了进来,而是将数组的第一个元素的地址传了进来。因此和下面的表述是一样的:
void get_dat(int *a); int dat[10];
get_dat(dat);
2 二维数组
(1)定义
数据类型 数组名[元素个数][元素个数];
其中 数组元素个数只可以是整型即5,或者整型表达式如5+4;
另外 数组元素个数的数据类型只可以是整型和字符型。
调用方法:a[i][j],*(*(a+i)+j)。
其中a[i],*(a+i)表示第i行第一个元素地址。
(2)数组指针
形式:int (*a)[5]; int b[][5]; a = b;==>可以用a[i][j],*(*(a+i)+j)取值;
若是定义为int *a; int b[][5]; a = b;则不能用a[i][j],*(*(a+i)+j)取值,因为编译器不能将a认为成二维数组。
(3)函数传参
可以定义为int a(int n1[][5]);和int a(int n1[5]);
即二维数组的行数是可以省略的。
二 指针
定义:数据类型 *变量名;
现在我们来感受一下* 和& 的魅力,*是将指针变量所存放的地址对应的值取出来(所以*一般只作用于地址变量);&是将某变量对应的地址取出来。