数组

数组名是指针常量,保存的是首元素的地址,不能做自加。


数组最好是不要用变量动态定义的,即当你输入的字符个数不确定时,就想先定义一个变量,然后把它传给数组作他的长度。因为这是依赖于编译器支持的标准,如果是C99的话,则可以动态定义数组大小。而像C89等则不可以,所以在不确定编译器支持标准时最好是不要用变量动态定义数组大小。

所以,我们要做到定义时写死数组长度。定义一下数组大小。


下面举例都用定义的数组名为a的数组;

数组初始化方法有:1、int 数组名[] = {0};;   2、memset(数组名,0,sizeof(数组名));


用scanf给数组赋值的时候1、scanf(“%d”,&a[i]);    2、scanf(“%d”,a+i);(自己定义一个变量i,进行循环)


a[i] == *(a+i)


&a表示取数组的地址


*和&互为逆运算,*(&a)和a是一样的,对一维数组的地址取值等于一维数组首元素的地址


二维数组不能省略列


*(*(a+i)+j)的意思,分开解析:1、(a+1)是第i+1个一维数组的地址。2、*(a+1)第i+1个一维数组的首元素的地址。3、*(a+1)+j第i+1个一维数组的第j+1个元素的地址。4、*(*(a+1)+j)第i+1个一维数组的第j+1个元素的值。


a[][]两个[]分别代表第几个一维数组和一位数组中的第几个元素。

a[][][]的[]分别代表第几个第几行第几列的数组。


&a对一维数组名取值,即一维数组的地址。

*(&a)对一维数组的地址取值,等于一维数组首元素的地址。

a一维数组首元素的地址。

aa首个一维数组的地址。

*aa首个一维数组的地址。

**aa首个一维数组的首元素的地值。

&aa对二维数组名取地址等于二维数组的地址。

*(&aa)对二维数组地址取值等于首个一维数组的地址。

**(&aa)== *aa


数组指针像((*a)[])大部分用作函数传参。

一维数组作形参时,系统会将其类型强制转化成指针。

传一维数组名,用元素的指针来接。

传二维数组名,用一维数组指针来接。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值