指针和数组的一些问题

数组与指针本来就是两种不同的类型,它们有很多不同之处,不能混淆。但是在实际运用中,有时却可以看作相同的。具体它们有哪里联系呢?先写一点内容,以后再完善。

 

数组名和指针

实际上,数组名就是一个地址,它是一个不可修改的左值。出于对效率的考虑,传递给函数的数组参数会转化为指针。这个指针指向该数组第一个元素。注意,首先,该指针的地址并不等同于数组名的地址;其次,该规则并不是递归的。例如,数组的数组会被改写为数组的指针,而不是指针的指针。

1.      表达式中的数组名(与声明不同)被编译器当作一个指向该数组第一个元素的指针。

2.      在函数的参数声明中,数组名被编译器当作指向该数组第一个元素的指针。

3.      数组名取地址得到的是指向数组的一个指针,它和表达式中数组名取得的地址不是一个类型,数组名得到的地址是指向数组元素的指针。它们的类型不同。

4.      用sizeof数组名得到的是整个数组的大小,而sizeof 指针这是指针的大小。但应当注意,前面的数组名并不是函数中被当做参数传入的数组名,当做参数传入函数后,数组名被转化为指针,sizeof后大小是指针的大小。同样的情况,被转化为指针后,数组名可以被修改。

5.      直接输出数组名,如果是字符数组,就输出字符数组的内容;如果是其他的数组,则输出地址。这一点和指针很像。但是,如果用字符串常量初始化字符数组和指针,它们的底层机制是不同的。初始化指针时所创建的字符常量被定义为只读,不能修改它的值,但用字符串常量初始化的数组可以修改。

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值