C/C++ 数组和指针及引用的区别

发布时间 - 2026-01-11 02:31:18    点击率:

C/C++ 数组和指针及引用的区别

1.数组和指针的区别

(1)定义

数组是一个符号,不是变量,因而没有自己对应的存储空间。但是,指针是一个变量,里面存储的内容是另外一个变量的地址,因为是变量所以指针有自己的内存空间,只不过里面存储的内容比较特殊。

(2)区别

a.对于声明和定义,指针和数组是不相同的,定义为数组,则声明也应该是数组,不可混淆
b.当作下标操作符时,指针和数组是等价的。a[i]会被编译器翻译成*(a+i).
c.当数组声明被用作函数形参的时候,数组实际会被当作指针来使用。

(3)从汇编角度分析

**int i = 10;**
00C44CC8 mov     dword ptr [i],0Ah 
**int * p = &i;** (1)
00C44CCF lea     eax,[i] 
00C44CD2 mov     dword ptr [p],eax 
**int arr[5] = {0};**(2)
00C44CD5 mov     dword ptr [arr],0 
00C44CDC xor     eax,eax 
00C44CDE mov     dword ptr [ebp-30h],eax 
00C44CE1 mov     dword ptr [ebp-2Ch],eax 
00C44CE4 mov     dword ptr [ebp-28h],eax 
00C44CE7 mov     dword ptr [ebp-24h],eax 

解释:

(1)lea先取i的地址,然后存入p指向的空间中,足够证明p有自己的空间。

(2)没给数组明分配空间

2. 数组和引用区别

(1)定义

引用是是给一个变量起的别名,引用必须要初始化,引用一经定义不能被改变,初始化的值必须要能取地址,访问引用变量,永远访问的是它所引用的变量的内存。

(2)区别

C语言中没有引用,C++11之前只有一级引用,之后有左引用和右引用。

(3)汇编角度

**int i = 10;**
00ED4CBE mov     dword ptr [i],0Ah 
**int &a = i;**
00ED4CC5 lea     eax,[i] 
00ED4CC8 mov     dword ptr [a],eax 

如有疑问,请留言或者到本站社区交流讨论,共同进步,感谢阅读,希望能帮助到到大家,谢谢大家对本站的支持!


# C/C++  # 数组和指针及引用的区别  # 数组与指针的区别  # 指针与引用的区别  # 深入理解c++指针的指针和指针的引用  # 详解C++中指针和引用的区别  # c++中引用和指针的区别和联系  # C/C++中指针和引用之相关问题深入研究  # C++ 中引用与指针的区别实例详解  # C++中引用传递与指针传递的区别(面试常见)  # C++入门教程之引用与指针  # 自己的  # 是一个  # 的是  # 必须要  # 如有  # 希望能  # 另外一个  # 谢谢大家  # 也应  # 翻译成  # 没给  # 共同进步  # 只不过  # 则声明  # mov  # Ah  # ptr  # dword  # int  # strong 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: VIVO手机上del键无效OnKeyListener不响应的原因及解决方法  如何用虚拟主机快速搭建网站?详细步骤解析  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Laravel Session怎么存储_Laravel Session驱动配置详解  如何快速生成凡客建站的专业级图册?  如何安全更换建站之星模板并保留数据?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  高性能网站服务器部署指南:稳定运行与安全配置优化方案  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  Python3.6正式版新特性预览  Android使用GridView实现日历的简单功能  Laravel怎么做缓存_Laravel Cache系统提升应用速度的策略与技巧  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  bing浏览器学术搜索入口_bing学术文献检索地址  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  微信小程序 闭包写法详细介绍  油猴 教程,油猴搜脚本为什么会网页无法显示?  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Laravel如何使用withoutEvents方法临时禁用模型事件  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何确认建站备案号应放置的具体位置?  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何在IIS7上新建站点并设置安全权限?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何在Windows环境下新建FTP站点并设置权限?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  ,怎么在广州志愿者网站注册?  ,在苏州找工作,上哪个网站比较好?  高端企业智能建站程序:SEO优化与响应式模板定制开发  如何在阿里云完成域名注册与建站?  高端建站三要素:定制模板、企业官网与响应式设计优化  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Python文本处理实践_日志清洗解析【指导】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  高端建站如何打造兼具美学与转化的品牌官网?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Mybatis 中的insertOrUpdate操作  如何在橙子建站中快速调整背景颜色?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】