C中数组的指针类型不兼容
对不起,如果这是一个愚蠢的问题,我觉得我错过了一些简单的东西,但我无法通过谷歌找到它 我得到了一个错误:C中数组的指针类型不兼容,c,arrays,pointers,C,Arrays,Pointers,对不起,如果这是一个愚蠢的问题,我觉得我错过了一些简单的东西,但我无法通过谷歌找到它 我得到了一个错误: lab9q4.c:72:15: warning: passing argument 1 of 'ReadSalaries' from incompatible pointer type [-Wincompatible-pointer-types] ReadSalaries(&salaries, size); ^~~~~~~~~ lab9q4.c:20:26:
lab9q4.c:72:15: warning: passing argument
1 of 'ReadSalaries' from incompatible
pointer type [-Wincompatible-pointer-types]
ReadSalaries(&salaries, size);
^~~~~~~~~
lab9q4.c:20:26: note: expected 'float **'
but argument is of type 'float (*) [(sizetype)size]'
void ReadSalaries(float *salaries[], int size)
这是我的密码:
float ReadSalary(int num)
{
int salary;
printf("Enter Salary %d: ", num);
scanf(" %d", &salary);
return(salary);
}
void ReadSalaries(float *salaries[], int size)
{
for (int i = 0; i > size; i++)
{
*salaries[i] = ReadSalary((i + 1));
}
}
int main()
{
const int size = 10;
float salaries[size];
ReadSalaries(&salaries, size);
}
大体上
ReadSalaries(&salaries[0], size);
您希望更改元素,而不是数组,因此可以安全地传递一个简单的指针。这是一个好问题,但已经回答了100次。当您获取
palaries
的地址时,类型是float(*)[size]
而不是float**
(正如编译器告诉您的那样)。(注意例外情况…特别是“.the monary&operator…”部分。)还请注意,如果删除”和“
,您可以使用一个简单的浮点*
指针。
ReadSalaries(&salaries[0], size);