C语言里的数组指针

本文探讨了C语言中数组与指针的密切关系,包括数组别名作为指针的性质,编译器对数组地址的优化,数组地址在内存中的连续性,以及通过指针操作数组元素的概念。通过示例代码展示了如何通过指针访问数组元素,并阐述了指针与数组在内存结构上的相似性和差异性,提到了多级指针可以类比为更高维度的数组。
摘要由CSDN通过智能技术生成

对数组地址的理解

1.数组别名本身是一个指针,对数据取下表实际上是先通过下表取指针,然后通过指针取值

  1. arr指向数组头的指针
  2. [n]->取得指针后对其进行n位偏移后作 * 对指针取值的操作

2.数组本身是被编译器做了优化的,arr是存放数组第一个元素的指针,那么&arr应该是指向这个指针的指针,然而编译器对其进行了优化,&arr会直接返回arr的值,从而使得本来是指向指针的指针返回了指向数组第一个元素的指针

所以有结论&arr == &arr[0] == arr

为了证明这个,可以看以下代码

int main() {
    
    int a[] = {
    1, 2, 3, 4};
    int i = 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值