2 gkc v GKC_V 于 2016.02.22 16:25 提问

C语言 a[0] 数组首地址只能给指针赋值吗 (a代表某数组)

如果不是的话,为什么下面的代码会出错:
图片说明

5个回答

skydream1
skydream1   2016.02.22 17:25

因为类型不同,min是int类型,而&a[0]是int * 类型

GKC_V
GKC_V a[0]是地址还是值?
接近 2 年之前 回复
GKC_V
GKC_V 可为何去掉“&”仍报错
接近 2 年之前 回复
hyb1996
hyb1996   2016.02.22 19:42


int mix=&a[0];
int max=&a[0];
改成

int *mix=&a[0];
int *max=&a[0];
就好了。另外,单词拼错了,最小值是min不是mix。

hyb1996
hyb1996   2016.02.22 20:01

a[0]是值,&a[0]是数组首地址,加&报错的原因是int mix=&a[0],mix是int,但&a[0]是int*,类型不匹配;不加&仍然报错,虽然int mix=a[0]类型匹配正确了,但是,函数minmax第三个参数要求的是int *mix,而你传入的是int,就报错了。对于max同理。正确做法是我刚才回复的。

Mr_Stack
Mr_Stack   2016.02.23 21:03

数组首地址是指针类型,你的意思是把这个a[0]的地址当做int类型传递给mix变量?

cjq694526101
cjq694526101   2016.02.24 21:38

a是一个int数组变量,a[0]是数组第一个值,是int类型,&a[0]是给数组a的第一个值a[0]取址,得到的是int*类型,该类型是一个指针,而且是一个指向int类型的指针。赋值运算符“=”两边的数据类型要一致。
看你的代码,你的原意是要获取数组首地址,所以你定义接收这个值的变量时也要定义成“指向int型的指针”类型,即int* min = &a[0];

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!