数组和指针的区别,数组和引用的区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
  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  
数组定义引用 数组是一组有序数据的集合,数组中的数据有一定规律。数组数组下标来唯一确定数组中的元素,数组中的每一个元素都属于同一个数据类型,不能把不同类型的数据放在同一个数组中。有些数组需要多个下标来确定,又分为一维数组,二维数组,三维数组甚至多维数组定义一维数组 一般形式:类型说明符 数组名[常量表达式] 说明:(1数组名的命名规则变量名相同,遵循标识符命名规则。 (2)定义数组时,需指定数组中... 阅读详情

相关推荐

C++:引用数组数组引用之间的区别

一、声明、定义初始化 1、声明:声明变量类型名字 2、定义:根据类型分配内存地址空间 3、初始化:将初始值拷贝到变量的内存地址空间中 二、为什么定义一个"引用"必须初始化? 因为引用需要绑定到初始化对象,所以引用必须初始化 三、引用数组数组引用之间的区别 首先,需要明确引用的概念,引用是对某个目标对象取了一个别名,对该引用的操作与对变量直接 操作的效果是一样的。 1引用数组:字面意思...

Lcoderfit的博客 7518

(C/C++学习)6.数组指针指针数组

说明:int (*p)[4] int *p[4](数组指针指针数组),如果你是一个初学者,也许当你看到这两个名词的时候,已经懵了。其实,只要你理解了其中的含义.这两个名词对你来说会相当简单并且很有趣,下面,我们就来深入探讨一下究竟什么是数组指针,什么是指针数组。 一.指针数组 1.前面我们已经学过数组了,比如说要创建一个一维整型数组,该怎么创建呢?应该是这样的:int arr[N]...

weixin_33670786的博客 241

C语言-数组定义引用

数组定义引用1. 一维数组、二维数组定义、初始化引用方法数组数据的特点:数组:一般形式:类型说明符 数组名[常量表达式];说明:一维数组引用1. 引用方式:二维数组二维数组引用表现形式:引用四种方法对二维数组初始化2.一维数组的应用(如排序),二维数组的应用(如矩阵运算)3.数组作函数参数4.字符数组定义、初始化输入输出方法5.字符串与字符串处理函数的使用 1. 一维数组、二维数组定义、初始化引用方法 数组数据的特点: 具有相同的数据类型 使用过程中需要保留原始数据 数组: 是一种具

努力的程序员 1万+

数组引用引用数组区别

引用的概念 引用相当于给已有对象起了一个别名,对引用的操作间接影响对象 引用只是取了一个别名,本身并不占用内存 引用需要绑定到初始化对象,所以引用必须初始化 数组引用 int a[2] = {1, 2}; int (&array) [2] = a; 上述代码中,array为一个引用引用对象为a,可通过对array的修改间接修改数组a 引用数组 int a = {1, 2}; int& array [2] = a; 由于array先向右结合,所以 int& arr

做一只猫的博客 3176

指针,解引用指针数组数组指针区别数组&数组名的区别

目录:1.指针是什么?2.指针的解引用3.指针数组数组指针4.数组&数组名5.例题求指针数组大小例1.求下面代码输出的结果例2.求下面代码输出的结果例3.求下面代码输出的结果例4.求下面代码输出的结果6.关于指针数组开空间的例题 1.指针是什么? (1)指针就是个变量,用来存放地址的变量(指针就是地址) (2)指针的大小是固定的4/8个字节(32位平台/64位平台)      eg: int a = 10;  &nbsp

HanMeng的博客 3260

数组指针引用区别

目录 前言 1. 数组指针 1.1 一维数组 1.2 二维数组 1.3 数组指针的共同点区别 2.指针引用 3.感想 前言 这三个基础的概念,虽然每本书C++编程语言的书都会提及,但是心里总觉得少了点什么,时时遇到BUG,总是百度了解决了,就这样过去了,这是个很不好的习惯。而且,博文代码从之后都进行验证。呵呵,光说不练假把式,指不定哪儿就跟自己想的有差别! 以后代...

路漫漫其修远兮 500

【C++】指针引用区别数组指针区别

目录 一、指针引用区别 二、数组指针区别 一、指针引用区别 本质 引用是别名(主要用于函数参数返回值类型,符号X&表示X类型的引用,不是独立的); 指针是地址(存放变量地址的一个变量,是独立的,可以被改变,包括其所指向的地址的改变其指向的地址中所存放的数据的改变。) 指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数...

like_that的博客 549

指针引用区别 数组指针区别

Note1指针有两个值:P *P void fun(int *p)//形参 不分配空间 { *p += 100; int a = 10; p = &a; } int main() { int x = 10; int *s = &x; fun(s); cout << *s <<endl<< x; return 0; } 分析...

孤傲小二~阿沐的博客 755

指针数组引用区别

指针数组引用区别 1.引用指针的关系: 引用它是给一个以存在的对象起的名字,不是对象,而且必须初始化,无法改变指定的对象,后面使用的话都是一直使用最初指定的对象。 指针不用初始化,指针可以改变指针的指向。 指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。流操作符<<>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。 2.指针

qq_44915016的博客 1170

引用指针区别数组指针区别

一:引用指针区别 1:引用并非对象,它只是为一个已存在的对象所起的另外一个名字,必须初始化,而且无法改变它绑定的对象,之后每次使用这个引用都是访问最初绑定的那个对象。 2:指针本身是对象,可以不用初始化,可以改变指针指向的对象 二:指针数组区别 指针 数组 保存数据的地址

逍遥小章 1976

C++总结1——指针引用/数组区别

1.指针引有什么区别?(从反汇编角度回答) a.其实引用指针本质上是一样的,他们的汇编指令都是两行。 int a = 10; int *p = &a; //lea eax,[a]                          将a的地址放在eax寄存器中 //mov dword ptr [p], eax     将eax寄存

wendy_keeping的博客 1058

c语言指针c 引用区别,C/C++ 中数组指针引用区别

我们在刚刚接触C语言的时候,都知道这些概念我们实际的操作中有很大的差别,那么C/C++ 中数组指针引用区别,大家都清楚吗?别着急跟随爱站技术频道小编一起看看吧!C/C++ 数组指针引用区别1.数组指针区别(1)定义数组是一个符号,不是变量,因而没有自己对应的存储空间。但是,指针是一个变量,里面存储的内容是另外一个变量的地址,因为是变量所以指针有自己的内存空间,只不过里面存储的内容...

weixin_36269709的博客 138

指针数组引用区别联系

概念: 指针指针是内存中的地址 例: 指针就是你家在一栋楼里的门牌号 数组:相同数据类型按一定的顺序排列的集合 例: 就是一个班级里的学生这个集合(共同类型就是学生) 引用:一个变量的别名 指针的作用: 指针作为参数: 例: void swap(int*p,int*q) { int tmp=*p; *p=*q; ...

qq_40421712的博客 4800

数组指针数组引用做参数的区别

template<class T> void func1(T &, T &) { } template<class TT> void func2(TT, TT) { } int main() { int a[10], b[10], c[20]; func1(a, b); //OK, 数组引用 func1(b, c); //ERRO...

qq_35886593的博客 660

指针数组指针引用,new/deletemalloc/free的联系或区别

1指针数组1数组:是存放一定数量的变量的内存空间; 直接输出数组名可以得到数组首元素的地址; 数组的元素在内存中是连续存放的(存放在静态存储区或栈上); (2)指针指针变量是用来存放某种类型的地址的变量; 指针很灵活,存储空间不能确定; (3)二者联系: 一个数组名可以复制给一个指针,赋值后的指针指向数组的首元素; 数组名可以向指针一样运算,Eg:*(arr + 1)...

niumengting的博客 497

数组指针】以及【指针引用】的区别

1、概念不同 数组数组是用于储存多个相同类型数据的集合。 指针指针相当于一个变量,但是它不同变量不一样,它存放的是其它变量在内存中的地址。 2、空间分配: 数组是静态分配,且分配的空间是连续的;指针是动态分配,分配的空间不一定是连续的。 3、大小不同(求sizeof) 数组数组所占存储空间的内存:sizeof(数组名) 数组的大小:sizeof(数组名)/sizeof(数据类型) 指针:在...

chris__x的博客 500

C++总结1——指针引用/数组区别【转】

(转自:https://blog.csdn.net/wendy_keeping/article/details/75193772) 1.指针引有什么区别?(从反汇编角度回答) a.其实引用指针本质上是一样的,他们的汇编指令都是两行。 int a = 10; int *p = &a; //lea eax,[a] 将...

Uaena的博客 193

指针数组数组指针区别与联系—引用指针(二)

指针数组数组指针区别与联系

恋蛩音的博客 397

Java中数组引用c语言指针区别?????

1指针能进行加减运算,数组引用只能赋值运算;2、数组引用传送的是值,而指针则是地址;

ngwth_nail的博客 711
上一篇: 进程和线程的区别
下一篇: c++设计模式之单例模式
Sweet_wen
博客等级 码龄10年 4粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值