标题:想问一下大佬们数组是都可以省去取地址符吗,为什么?
只看楼主
zzz145
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-12-20
结帖率:100%
已结贴  问题点数:20 回复次数:6 
想问一下大佬们数组是都可以省去取地址符吗,为什么?
如题
搜索更多相关主题的帖子: 数组 地址 
2021-12-21 10:32
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
你这个问题莫名其妙的,你得告诉别人你脑子里想象的使用场合

int a[3];
a 是 int[3] 类型,是一个数组(当然它也能隐式退化成一个指向int类型的指针,比如 int* p = a;);
&a 的类型是 int(*)[3],也就是它是一个指向int[3]类型的指针。

两者类型不一致,鬼知道你脑子里想象的那个场合是否适用
比如
void* p = a;
void* p = &a;
这两者就是完全等价的,C标准规定了数组地址与数组首元素地址相同(但类型不同)
2021-12-21 11:14
diycai
Rank: 8Rank: 8
等 级:贵宾
威 望:19
帖 子:147
专家分:895
注 册:2021-5-18
得分:10 
程序代码:
#include <stdio.h>
int main()
{
    int buf[10];
    int a[5] = {1,2,3,4,5};
    a[5] = 88;
    printf("%d %d\n" , *(a+1), *(int *)(&a+1));
    return 0;
}
2021-12-21 11:16
qq383264679
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
得分:0 
好久没来论坛了,看一下相关的过往经历,这个论坛从注册到现在差不多9年了!
2021-12-21 15:44
qq383264679
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
得分:0 
回复 2楼 rjsp
c语言大神!
2021-12-21 15:44
zzz145
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-12-20
得分:0 
回复 2楼 rjsp
就是scanf数组的话,一维数组、二维数组什么的都不用加取地址符吗?
2021-12-21 19:08
zzz145
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2021-12-20
得分:0 
回复 3楼 diycai
求问:为啥*(int *)(&a+1)的输出结果是a[5]的值啊
2021-12-21 19:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507940-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085387 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved