数组名和数组名取地址& 的区别

c语言中关于数组与指针的一点心得 c语言中关于数组与指针的一点心得 相信大多人刚刚接触C语言的数组时,一定听过类似的话:数组名有时候可以看做指针,但有时候不能看做指针。也一定发现过数组名的地址与对数组名进行取地址运算之后得到的地址相等,相信大多数人也为此困惑,这篇文章就是面对初学者,希望可以解除你们困惑。 数组名什么情况不可以看做指针 (1)数组是sizeof运算符的操作数。 (2)数组是地址运算符&的操作数。 (3)当 阅读详情
在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是“指向int的常量指针“。
       在以下两种场合下,数组名并不是用指针常量来表示,就是当数组名作为sizeof操作符和单目操作符&的操作数时。 sizeof返回整个数组的长度,而不是指向数组的指针的长度。 取一个数组名的地址所产生的是一个指向数组的指针,而不是一个指向某个指针常量的指针。所以&a后返回的指针便是指向数组的指针,跟a在指针的类型上是有区别的。
       请看下面的例子:

        从以上输出我们可以看出:数组名和数组名取地址在数值上是相同的,均表示数组第一个元素的地址。但是二者的颗粒度不同。
        当数组是一维数组时,数组名是以一个数组元素为颗粒度,表现为“当数组名加1时,这里的1表示一个数组元素单元”,例子中的数组元素为整数,所以数组名加1时地址加4;而数组名取地址&以整个数组为颗粒度,表现为“当数组名取地址&加1时,这里的1是表示整个数组单元”,例子中的数组为有5个元素的整型数组,所以数组名取地址&加1时,地址加20.
       当数组是二维数组时,数组名array、array[0]、&array[0][0]以及数组名取地址&在数值上是相同的,同样各个之间的颗粒度不同。其中array[0]以及 &array[0][0] 的颗粒度相同,均是以一个数组元素为颗粒度,所以它们加1后,地址加4;而数组名和数组名取地址&颗粒度不同,前者以一行元素为颗粒度,后者以整个数组单元为颗粒度,所以前者加1,地址加3*4,后者加1,地址加6*4.
C和指针之数组名和&数组名和&首元素以及sizeof(数组名)和sizeof(数组名作为参数)区别 1、先看我的测试Demo #include #include int get_size(int *p) { int size = sizeof(p); return size; } int main() { int a[6] = {1, 2, 3, 4, 5, 6}; int b[] = {1, 2, 3, 4, 5, 6}; int c[10] 阅读详情

相关推荐

matlab 三维绘图 抛光,瓷砖抛光过程建模与仿真

:瓷砖抛 光过程 建模与仿真朱 成 就(广 东工业大学 机 电工程 学院, 广东广州 )摘要 :瓷砖的抛磨影响 因素众 多 ,实际磨削加工时容易出现漏抛 、返抛现象 。对陶瓷抛光机磨头进行运动学分析 ,并基于不 同粒度号 的磨 粒在一定压力下的加工深度模型 ,探讨抛光机磨 头转 速 、横梁摆动频率 、传送速度对瓷砖抛光加工表 面均匀性 的影响,然 后结合 磨削机理使 用 对陶瓷抛光过程进行仿真 ...

weixin_36331058的博客 747

数组名和数组名取地址&

在C中, 在几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组第一个元素的地址。 它的类型取决于数组元素的类型: 如果它们是int类型,那么数组名的类型就是“指向int的常量指针“。        在以下两种场合下,数组名并不是用指针常量来表示,就是当数组名作为sizeof操作符和单目操作符&的操作数时。 sizeof返回整个数组的长度,而不是指向数组的指针的长度。 取一个数组

caoyuanll的专栏 982

深度:善用人工智能推动高等教育学习、教学与治理的深层变革

从学习方式的革新到教学模式的重构,再到治理体系的升级,人工智能已不再仅仅是辅助工具,而是成为重塑高等教育生态的核心驱动力。某高校的创新实践表明,引入AI生成虚拟患者后,医学生在临床沟通训练中的共情能力提升27%,印证了技术工具与人文教育的互补效应。美国卡内基梅隆大学的实践表明,经过系统培训的教师,其课程设计效率提升40%,且能精准定位83%学生的学习难点。当每个学生都掌握提示工程原理,每位教师都能驾驭AI教学工具,每所高校都建立智能治理框架时,教育将真正实现"以人为本"与"技术为用"的有机统一。

IT胶囊 1093

数组名 和&数组名的理解

对于数组名的理解

anayi的博客 1952

STM8库函数开发手册(3) //UART1、内部EEPROM、FLASH操作库、IIC(硬、软)

STM8S 微控制器家族的通用同步异步收发器(UART1,UART2 或者UART3)提供了一种灵活的方法与使用工业标准NRZ 异步串行数据格式的外部设备之间进行全双工数据交换。STM8 的UART 提供范围的波特率选择,并且支持多处理器通讯。UART 也支持LIN(局部互联网)协议版本1.3,2.0,和2.1 以及在主模式下的J2602。 UART1 和UAR...

finedayforu的博客 2522

用MATLAB从零实现六足机器人步态仿真:交替三角与波动步态保姆级教程

本文详细介绍了如何使用MATLAB从零实现六足机器人的两种经典步态仿真:交替三角支撑步态和波动步态。通过参数定义、相位设置、运动轨迹生成和三维可视化等步骤,帮助读者掌握六足机器人步态规划的核心技术。教程包含完整代码和详细解析,适合机器人爱好者和相关专业学生学习实践。

weixin_26765363的博客 229

对数组名取地址 a[ ],&a

C语言规定,数组名代表数组的首地址,也就是第0号元素的地址。所以a==&a[0] 但对数组名取地址时却要注意了,在理解“对数组名取地址”这一表达式的含义时一定要记住:数组名是“数组”这种变量的变量名 这样,&a就好理解了,它取的是“数组”这种变量的地址 &a+1自然也就要跨过整个数组,所有元素长度总和,这么长的一个长度。例如:int a[10],那么&a+1就要跨过10个int的长度 reference: 对数组名取地址 a[ ],&a - No S..

Oliver King 的小窝 2906

从ET到PT阶段:一文详解汽车零部件DV与PV测试的完整流程(含常见问题解析)

本文深入解析汽车零部件开发中的DV(设计验证)与PV(性能验证)测试全流程,涵盖从ET到PT阶段的关键技术要点与常见问题解决方案。针对车载开发工程师,提供实战指南与优化策略,帮助提升零部件质量与生产效率,确保符合行业标准与市场需求。

weixin_29273849的博客 786

[C++] 指向常量的指针 VS 指针类型的常量

const 修饰指针时的位置不同,作用也不相同。

lizhiyuanbest的博客 231

S7-1200控制S120变频器

②:硬件目录下,添加实物S120设备进行组态(其它现场设备--PROFINET IO--DRIVES......②:双击S120进行IP地址和设备名称设置(注:此处要与STATER软件设置S120一致)M10.0接通时,电机开始运行,M10.0断开,电机停止,调试完成。①:将S7-1200与S120进行通讯连线。④:STATER软件下设置与组态一致的报文。①:点击添加新设备,按实物进行设备组态。②:打开OB1,编写启动停止程序。①:查看S120报文地址。②:模块下添加DO矢量。③:子模块下添加报文。

weixin_38261173的博客 4868

电源芯片TPS54560典型应用电路及设计详解

TPS54560 是一款配有集成型高侧 MOSFET 的 60V、5A DC-DC转换器,输入电压范围7-60V,输出电压可通过外部反馈电阻设置成略低于输入电压的任意值。**所以,**R5=31.25KΩ、R6:10KΩ(常用值)时,即可设置输出电压为 3.3V。**所以,**R5=140KΩ、R6:10KΩ(常用值)时,即可设置输出电压为12V。设计 TPS54560 的输出电压时,主要通过外部反馈电阻网络来设置输出电压。因此,输出 3.3V ,输入电压24V时推荐的电感值为 8µH 至 10µH。

weixin_42306872的博客 1万+

数组名和&数组名

【代码】数组名和&数组名。

FPGAer_QQ742875810的博客 375

重回童年的经典系列☀️| 【坦克大战3D版】游戏制作+解析

带你重回童年的经典系列——坦克大战3D版制作,感兴趣的可以看看呀~

努力前行,总会成为自己心中的那道光 5万+

指针和地址

是一个取地址&a是一个表达式,其功能是求变量a的地址当变量是指针类型时,不需要取地址符号,指针指向的是某一个存储单元的首地址。当变量是数组,不需要取地址符号,数组名本身指向的就是这个数组的首地址。其它类型变量需要用&取地址符号。

qq_57780730的博客 338

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

数组名是数组首元素地址,但是有两个例外你知道吗?

数组名是数组首元素地址,但是有两个例外你知道吗? 先给大家看两段代码: 先自己做一下这两道题再看答案 1 int main() { int arr[10] = {0}; printf("%d\n", sizeof(arr[0])); printf("%d", sizeof(arr)); return 0; } 2 int main() { int arr[10] = { 0 }; printf("%p\n", arr); printf("%p\n", arr + 1); printf("

sgbscx的博客 252

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

C++ 指针与取地址&

知识点小结 C++的指针和引用因为涉及到地址和地址当中的存储内容,所以比较容易混淆。首先需要注意的是,指针和引用存放的都是被引用对象的地址!地址!地址!比如对于指针,当我们定义一个指针p,比如说int* p = &a时,指针p必须指向一个地址(即等号右边必须是一个地址)。而*p则表示该地址中包含的内容(即a)。&这里是取地址符号,不是引用,但作用也是和地址相关,及取出变量的地址。 好,现在我们接触到了第一个地址,就是变量的地址,这个地址中存放了变量的内容,在下面的例子中可以认为这个地址中存放

boy854456187的博客 3050

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

c语言不定长数组_这个C语言题目我感觉你很可能会错。。。

各位,今儿给大家带来一个不错的C语言试题,此题对你在C中的数组理解与掌握是个不错的检查,话不多说,请看题:问题是会输出什么?我们就开门见山了,通过阅读代码发现本体主要考察以下四方面:数组的指针法访问;数组名和数组名取地址的应用与区别;sizeof关于数组名和其他变量的用法;强制类型转换。解析之前我们有两点需要明确:1、在C中,几乎所有使用数组的表达式中,数组名的值是个指针常量,也就是数组...

weixin_39715926的博客 268

c语言进阶_字符串指针

本文总结了C语言中字符串和指针的关键知识点:1. 区分字符数组与常量字符串的定义与修改权限,强调常量字符串应使用const修饰;2. 对比指针与数组的存储特性,常量字符串会被编译器优化存储一次;3. 演示指针数组操作二维数据的两种等价方法;4. 解析数组指针的特殊性,通过地址运算验证&arr与arr在指针步长上的本质差异。核心要点包括内存管理、类型修饰符const的正确使用,以及数组名在sizeof和&操作中的例外行为。

2402_85758429的博客 58

char p[] 和 char *p 和extern

今天去面试一到题 :在文件 A.C 里定义 char *p="123";在文件 B.C 里声明 extern char p[]; 并打印 printf("the p ===%s\n",p);运行结果会怎样?当时为的想法是 编译应该不过 但是底气不足 也没写上去  在gcc 编译了 一下果然报错了:conflicting types for ‘p’ 大概的意思就是...

wo.a的博客 355

指针数组与数组指针

目录1.指针数组2.数组指针 一道小题目: 根据类比法:字符数组——存放字符的数组(char arr[10];)整型数组——存放整型的数组(int arr[10];)指针数组——存放的就是相应指针 1.存放字符指针的数组——字符指针数组char* arr[5];2.存放整型指针的数组—整型指针数组int* arr[5];理解:arr先与[5]结合,说明arr是一个数组,数组中有五个元素,int*或char*就是每个元素种类。类比:整型指针——指向整型的指针(int a=10;int* p=&a;)字符指针—

weixin_73799664的博客 267

指针与数据的分析

在详细说指针之前,先来聊一聊,C语言中的变量到底是什么东西。所谓的变量,只不过是一段内存空间的别名,那么,我们是否能直接操作该地址呢,对于这个问题,就引入了指针。指针,可以将其理解为一个变量,只是该变量值为地址。下面我们先来看一段代码。 #include<stdio.h> int main(){ int i =5; int* p = &i; printf("%p\n...

qq_40566480的博客 257

指针数组和数组指针

加*是打印值因为&arr是首元素地址,不过打印则是整个数组。

qq_68149578的博客 25

C语言—指针与函数指针

答案是为了告诉编译器指针所指向的数据的类型,int* 类型的指针,编译器解引用时会读取4字节(int 的大小),double* 类型的指针,编译器解引用时会读取 8 字节(double 的大小)。这里用了两种不同的方法来交换两个变量的值,使用 swap(&m, &n) 函数相信你已经非常熟悉了,但实际上你可能并不懂它,在 C 语言中,函数名本身就是一个指针,所以这里的 swap 实际上是一个指向函数的指针。这里的 & 操作符是取地址符,用于获取 number 在内存中的地址,打印出来是一个十六进制的地址。

leihu007的专栏 616

C语言彻底搞懂:arr、&arr[0]、&arr

arr、&arr[0]:首元素地址,按元素跨步;&arr:数组整体地址,按整个数组跨步。

alpha___go的博客 151

进阶指针知识(1)

指针知识详细介绍

Be_determined的博客 125
上一篇: Turbo C 3.0安装及使用说明
下一篇: C语言高级测试:为C程序员准备的16个最佳问题
wangkeyen
博客等级 码龄18年 372粉丝 66原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值