因为类型不同,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];