C语言文本操作以及C语言小技巧

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语言中的参数只以值拷贝的方式传递参数 因此在数组作为参数进行传递的时候数组会退化成指针
函数参数中有数组的时候会自动的退化成相应的常量指针


栈是现代计算机程序中最重要的概念之一
栈在程序中用于维护函数的调用上下文,没有栈就没有函数就没有局部变量
栈保存了一个函数调用所需要的维护信息
函数参数,函数返回地址
局部变量
函数调用上下文


猜你喜欢

转载自blog.csdn.net/andrewgithub/article/details/78895071