C语言文本操作
数组的类型是由元素类型和数组的大小共同决定的
例如:int array[5]的类型为int[5]
C语言中通过typedef为2数组的类型进行重命名
typedef type(name)[size];
例如:
typedef int(AINT5)[5];
typedef float(AFLOAT10)[10];
定义数组:
AINT5 iarray;
AFLOAT10 farray;
声明:数组名是数组元素的起始地址,但是不是数组的起始地址;
通过&用于数组名可以获取数组名的起始地址;
int array[5];
array //数组元素起始地址
&array //数组起始地址
数组指针的定义及其使用方式:
定义一个数组指针:type (*Pointer)[5];
Pointer 为数组指针变量名
type 为指向数组的类型
n为指向数组的大小
二维数组和二维指针
二维数组在内存中以一维的方式排布
二维数组可以看成是常量指针
以为数组名代表数组元素的首地址
int a[5] -> a的类型为int *
二维数组名同样代表数组元素的首地址
int m[2][5] -> m的类型为int (* ) [5];
结论:
二维数组名可以看做是指向数组的常量指针
二维数组可以看做是一维数组
二维数组的每个元素都是同类型的一维数组
因为C语言中的参数只以值拷贝的方式传递参数 因此在数组作为参数进行传递的时候数组会退化成指针
函数参数中有数组的时候会自动的退化成相应的常量指针
栈是现代计算机程序中最重要的概念之一
栈在程序中用于维护函数的调用上下文,没有栈就没有函数就没有局部变量
栈保存了一个函数调用所需要的维护信息
函数参数,函数返回地址
局部变量
函数调用上下文