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

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

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


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

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

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

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

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