代码:

#include<stdio.h>
int main()
{int  a[10] = {0};printf("a:    %p     a + 1:     %p\n",a,a + 1);printf("&a:   %p     &a + 1:    %p\n",&a,&a + 1);printf("&a[0]:%p     &a[0] + 1: %p\n",&a[0],&a[0] + 1);return 0;
}

结果:

a:    0x7ffc2190a8b0     a + 1:     0x7ffc2190a8b4
&a:   0x7ffc2190a8b0     &a + 1:    0x7ffc2190a8d8
&a[0]:0x7ffc2190a8b0     &a[0] + 1: 0x7ffc2190a8b4

结论:

数组名a表示的是“数组首个元素的地址,而首个元素是int类型”,&a指的是int a[10]这个数组的地址,而这个数组的长度是40个字节,所以&a + 1比a大了40。

可以发现a 与 &a[0]是等价的:在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针

扩展:

1.本文以int数组为例,字符串数组等其他类型数组同样适用此特性;

2.数组名称作为形参传进去函数时,退化成指针使用。

【⛔C语言“数组名”,不得不说的秘密!⛔】c语言“数组名字“初探相关推荐

  1. sizeof用于数组名时,得到的是整个数组的大小

    1.通过使用sizeof可以获取类型或者变量的大小 2.数组名时候我们可以看做指针,但是有不同点: 数组名是常量指针,不可以改变它的值: sizeof用于数组名时,得到的是整个数组的大小(与指针不同) ...

  2. c语言++数组名【数字】_C ++程序在数组中打印所有非重复数字

    c语言++数组名[数字] Problem statement: Write a C++ program to print all the non-repeated numbers in an arra ...

  3. 数组名不等于指针---sizeof()函数求数组大小错误问题

    前言: 今天在项目中需要求采样点的数量并且遍历,采样点用数组存储,自定义了一个函数想要用sizeof求其长度,然后遍历,结果失败了,查阅之后发现以下问题: 在main函数中,sizeof是可以正常工作 ...

  4. c语言变量名由啥组成,一个c语言是由什么构成

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 一个C语言由数据类型.常量与变量.数组.指针.字符串.文件输入或者输出构成.C语言是一门面向过程的计算机编程语言,C语言的设计目标 ...

  5. 数组名和指针(这里为指向数组首元素的指针)区别?

    二者均可通过增减偏移量来访问数组中的元素. 数组名不是真正意义上的指针,可以理解为常指针,所以数组名没有自增.自减等操作. 当数组名当做形参传递给调用函数后,就失去了原有特性,退化成一般指针,多了自增 ...

  6. C语言-数组名真的不是指针

    文章目录 1 前言 2 关于一维数组 3 sizeof运算符和自增运算符 4 数组名也不是常量指针 5 总结 1 前言 参照我之前的两篇文章: 二维数组做函数的参数 动态创建二维数组 事实告诉我们,二 ...

  7. 彻底弄懂C语言数组名

    先定义一个一维数组 int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 一.数组名是什么 数组名的值是数组首元素的指针常量. 数组名不是指针,但大多数使用到数组名的 ...

  8. c语言中数组名a和a详细介绍

    其实这两个东西挺难理解的,应该也没有那么重要,了解一下好了,主要还是要多多理解数组指针的运算 最近又把学习c语言提上日程上来了~~~先把我打算看的书都写下来吧,<C语言深度剖析>,< ...

  9. C语言中二维数组名与数组地址、首行地址、首行首元素地址关系与区别详解(初学者必须掌握)

    C语言作为很多大学理工科都会学习的语言,作为一种编程入门语言. 但是相对于其他高级编程语言来说相对是比较难,尤其是指针,不知道有多少莘莘学子都是因为它,从C语言入门到放弃. 想当年,笔者在大一学习C语 ...

  10. 从编译器角度分析C语言中数组名和指针的区别

    从编译器角度分析C语言中数组名和指针的区别 数组名和指针是两个往往很容易让人们混淆的概念,很多人以为数组名就是一个指针,也有很多人知道数组名不同于指针但是仅知道数组名的值不能像指针一样改变. 例如你可 ...

最新文章

  1. linux释放内存脚本
  2. 华为AR28-31配置光纤接入
  3. 利用oracle快照dblink解决数据库表同步问题
  4. 将CSDN600W用户及密码帐号存入本地MySql数据库
  5. Spring @Transactional踩坑记
  6. 《用户网络行为画像》读书笔记(一)
  7. 被AI改变的风投模式:数据驱动使效率提高10倍
  8. Linux下的python.......安装
  9. 深入理解JVM(4)——如何优化Java GC
  10. 功能强大的pdf控件,用户无需安装任何软件即可使用
  11. PLSQL修改表字段长度报ORA-25150错
  12. 框架合集:Java框架自学视频教程-动力节点
  13. 史上最全的点线面距离公式与推导过程(图文介绍)
  14. Qt设计一个给图像打掩膜的界面
  15. ubuntu 16.04 成功安装网卡驱动
  16. 官方确认:商业银行互联网贷款管理办法将出台!
  17. Android实现键盘弹出界面上移
  18. 自定义Dialog 实现 仿网易云音乐的隐私条款声明弹框
  19. Python爬虫进阶——urllib模块使用案例【淘宝】
  20. 纵观无盘系统发展历史

热门文章

  1. bnuoj 1065 简单的问题(位运算)
  2. BNUOJ 4064 条形码设计 (动态规划 + 递推)
  3. golang之iota
  4. Flume1.7.0的安装与使用
  5. linux系统进程的内存布局
  6. unicode and utf-8
  7. 一张图解释几个监督学习的定义
  8. Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环
  9. Android简易音乐播放器实现代码
  10. GPS-nmealib学习