C高级之函数(二)

数组名与指针的区别

相同:

对数组名的操作相当于对指向数组首地址指针的操作,如下:

先建立一个数组a[5]

int a[5] = {1, 2, 3, 4, 5};

取数组第二个元素,可以有一下操作:

1.    a[1]

2.    定义一个指针,通过指针取数组第二个元素

int *p;

p = a;

*(p + 1)

 

相异:

1.    指针是变量,数组名是常量

在上面的例子中,p可以做到p=p+1,但是a做不到a=a+1,编译器会报错。因为数组名是常量,常量不能作为左操作数即=左边的数。

2.    求本身长度不同

sizeof(a) / sizeof(int) 值为5,sizeof(p) / sizeof(int) 值为1。如果a是一个指针,那么

sizeof(a) / sizeof(int) 值应该为1,因为所有的指针长度都是固定的都是4个字节,所以a

不是一个指针,在编译器眼里a是一个变量,这个变量是int类型的数组,数组长度为5,

但是编译器又保留(放纵)它具有指针的功能。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值