数组和指针的区别

数组的定义:

类型符+数组名+[常量表达式]

int ar[n]        n的值不能为空,必须为正整数且在编译时需要确定它的值

void main()
{
int ar1[5]={};
int ar2[]={1,2,3,4,5};
int ar3[5]={1,2,3};

}这些定义都是正确的

数组下标的引用;

sizeof(ar)     表示整个数组的大小

所以数组中元素的个数可以表示为   n=sizeof(ar)/sizeof(ar[0]);

&ar  所取的是整个数组的首地址,在其他情况下 ar表示数组首元素地址

数组和指针的区别

数组对于数据是直接访问,而指针对数据是间接访问

数组一般存在于内存的栈区,所以在C语言中只是一组同类型的普通变量,即使这个变量可能是指针。所以它的作用比指针小很多,指针可以指向任何区的任何数据。所以在一些情况下,数组名只是指针的一种,它是指针中只指向栈区的且指针的移动范围是有限的,即数组长度,而且数组在定义时就有了自己的内存,一般指针如果未指向一个内存块时,它是没有内存的,即所谓的野指针。

总结:

数组不能进行ar=NULL操作,也不能ar++,ar--,但指针可以。

ar[i]=》*(ar+i),所以在编译时ar[i]和i[ar]会被编译为*(ar+i)和*(i+ar)i,都能编译通过。

数组只是定义在栈区的一个连续变量,它的首地址就是一个指针。

访问数组中的元素,可以用数组ar[i],也可以用指针p[i].





    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值