C++中a的区别,C++中&a[0]与a[0] 的区别?

2020-11-17 10:15:46 字数 4774 阅读 7875

1楼:幻想秘境

a[0]:是获取a这个数组第0个元素的值;

&a[0]:是获取a这个数组第0个元素的地址;

比如把数组比作一个小区,a[0]就是代表小区里某栋房子本身,而&a[0]则表示某栋房子的门牌号,你知道了门牌号,并且知道它在a小区,那么你就能找到这栋房子.

望采纳!!^_^

2楼:匿名用户

&a[0]输出的是一个地址值。(数组的首地址)*(a+1)输出的是“2”即数组第二个元素的值pb的输出与&a[0]相同,都是地址。(数组的首地址)*pb输出的是“1”

3楼:匿名用户

a[0]是第1个元素

&a[0]第一个元素的地址

4楼:zoe_归天

0012ff6c 2 0012ff6c 1

&a[0]是取a[0]的地址

a[0]则是数组a 的第一个元素

5楼:冰蓝月零冻

&a[0]是a[0]的地址,输出以后是类似于0x0021df34这种格式的东西,表示内存地址

在c语言里面,&a[0]++和&a[0]+1分别表示什么意思?

6楼:

&a[0]++;是错误语句,编译都不会过。因为++是后++,在执行该语句时是不计算的,所以a[0]++是个表达式而不是值,显然用&取一个表达式的地址是非法操作!而如果是&++a[0];则是正确的,因为前++在执行&时已经计算过了:

就是先给a[0]+1,然后再取a[0]的地址。

&a[0]+1;是正确语句,因为&的优先级比+高,所以是先取a[0]的地址再给这个地址+一个元素所占字节数——就是说&a[0]+1是a[1]的地址。

7楼:匿名用户

&a[0]++表示程序运行时会对运行结果自加1

&a[0]+1表示程序运行时对结果加上1,如果改为2就会加上2

8楼:一辈子朋中

他们的结果一样,都是a[0]的地址加一

9楼:百度用户

a[0]表示数组a 的第一个元素,

&a[0]是取a[0]在内存中的地址

&a[0]++是将a[0]在内存中的地址向前移动一个单位.

理论上&a[0]+1和&a[0]++的执行效果是差不多的

10楼:匿名用户

不一样!

++的优先级比&高,&比+高!

所以&a[0]++是进行a[0]=a[0]+1之后,在取a[0]的地址

而&a[0]+1是先取a[0]的地址,然后将指向这个地址的指针(假设int *p;p=&a[0];)移动一个数据长度,即指向了a[1];

&a[0]++

就是&a[0]+1就是

11楼:匿名用户

这要看你要说的是

一维数组还是二维数组了,如果是一维,答案同atchoo,要补充的是,向前移动的是数组数据类型所占的内存空间,比如是int,就移动2个单元;如果是二维,

a[0]表示第一行首地址,&a[0]表示第一行第一列首地址,&a[0]++就是把第一行第一列的元素加1.

12楼:匿名用户

有人说a = a + 1;比a++;慢,但现在的编译器结果是一样的.

13楼:信培胜戊衣

编译错误如下,都是取得数组a的第二个元素的地址&a[0]++与&(a[0]++)等价:6,无法编译通过,不能取得地址;

表示a[0]++不是一个左值:

non-lvalue

inunary

`&'.cpp:

main。

而&a[0]+1与a+1和&a[1]是等价的

c语言 二维数组a【0】与a与a【0】【0】有什么区别?

14楼:匿名用户

数组在内存中是连续按行分布的,对于a[2][3]=,};它在内存中的分布式1,2,3,4,5,6;所以他等价于a[2][3]=;在c/c++中,数组名也即是数组首地址,这里加入a=0x1000;那么它的地址分就是:1000,1004,1008,100c,1010,1014;&a[0][0]也就取第一个元素的地址,即1000,a[0]是第一行1000,1004,1008的首地址,也是1000,也即是a元素的首地址;

int *b=a[0];

*b和a[0]是等的,是a数组第一行首地址;不同的是a[0]是只读的,*b是可读写的因为b是指针变量,你可以试试a[0][3],a[0][4],a[0][5]都能打印出来,别看a[2][3]以为这样越界了,其实越不越界是按地址来算的,地址上讲,&a[0][3]=a[1],所以完全没问题;按照地址计算上面打印的值就是4,5,6;同理用*(b+3),*(b+4),*(b+5)也是一样的道理;

a就是数组的首地址,a[0]是第一行第一个元素的首地址,也即是a的首地址,&a[0]是第一行的首地址,从数值上将,没问题,只是数据类型上不一样;

a[0][0]就是取第一行第一个元素的值,也即是1

15楼:匿名用户

a[0][0]是值,a[0]和a是地址

c++ int (*a)[20]与int *a[20]有什么区别吗求详解

16楼:匿名用户

int (*a)[20]是数组指针,int *a[20]是指针数组,区别详解

顾名思义就是存放指针的数组。整个a是一个数组,里面的元素都是指针,如果想把某个指针存入这个数组可以使用这样的方法:a[i]=p,其中p是一个普通指针,i是偏移址。

这个意思是把一个指针p存入第a数组中的第i+1个元素的位置。那么再看你的问题

1)a[0]是指针数组第一个元素,它是一个指针。

2)*a[0]是读取a[0]中的内容,前面说了a[0]是存在数组a的第一个元素,那么读取这个元素也就是读取存在a[0]的指针的内容,比如a[0]存放了指针p,而p=&x,而x=5;那么,读取指针p的时候会读出x的值就是5.

3)&a[0]意思是把a[0](一个指针)取地址,这个地址自然就是a。

c++中a

17楼:匿名用户

加上溢出的情况,你在想一下,a-b<0永远成立,a

18楼:匿名用户

逻辑上一样,但是后者多一个运算

19楼:匿名用户

这两个是相同的,没有区别

20楼:冷巴吧

在内存中存储是不同的,执行步骤也不同

c++里char a='0';和char a=0;有什么区别??

21楼:小傻

char a[100] = ;和char a = 区别如下:

第一个是 100个字节 全部初始化为\0 ,这个是先给出大小才初始化第二个是就一个字节 初始化为\0, 这个是赋值初始化 赋的值决定了大小

分配的内存地址空间也不一样,如下:

22楼:匿名用户

第一个是指字符a赋值字符型‘0’,第二个指字符a赋值ascii值为0的字符也就是空字符(空格)。

23楼:百度用户

c++里面初始化一个字符必须打上单引号 也就是类似于第一个 char a='x';。第2个是不正确的。

c++中a[p++]=0;与a[p]=0;p++;是不是一样的?

24楼:匿名用户

这两个是一样的。

含义是:先给a[p]赋初值0,然后p自加1,即指向下一个元素单元。

c++语言中a=a>=0?a:-a;什么意思

25楼:匿名用户

a=a>=0?a:-a;

a等于 a>=0?a:-a; 它的意思就是如果a>=0成立,取a 也就是a=a ,如果不成立去-a 那么a=-a;

这行命令的用处就是 给a取绝对值

26楼:匿名用户

和变量优先级有关系

在c++里自增运算符的优先级是2 减法运算符的优先级是4再加上表达式是反向解析的 于是-3的操作会先放在栈里碰到++运算符先做++的运算 然后-3才会出栈所以这个表达式在运算的时候的顺序应该是

1.a=a+1

2.a=a-3;

另外,站长团上有产品**,便宜***

27楼:

用数学来给你解释,其功能相当于下面的式子。

a=|a| //将a取绝对值后,再赋予a。

28楼:匿名用户

这个很简单 就是让a取得值不能为负数

公式解释 给a附一个值 如果这个值大于等于0 就取a 如果小于0就取a相反数-a 于是负数变正数

29楼:沧海雄风

a=a>=0?a:-a 如果 a>=0 则 返回 a 那么 a=a

如果a<0 则返回-a 那么 a= -a;

30楼:丶

a>=0吗、真 a取a的值,假a取-a

31楼:匿名用户

a>=0,把a的值赋给a

a<0,把-a的值赋给a

32楼:颖儿

就是当a>=0的时候则a=a,否则a=-a!

C++中delete和delete的区别

1楼 du知道君 你是不是问 delete 和 delete 的区别 一个是释放单个物体 比如 class a a p new a 一个是释放物体数组 a p new a 50 delete a c 中delete和delete的区别 2楼 育知同创教育 delete or delete 问题没说清...

C++中delete和delete的区别

1楼 千锋教育 主要差别是 是否调用析构函数 delete data 会自动调用data数组每个元素的析构函数 delete data则不会 2楼 匿名用户 没区别!!!你确定你问题问的对? c 中delete和delete的区别 3楼 育知同创教育 delete or delete 问题没说清楚啊...