【发布时间】:2014-05-26 13:03:17
【问题描述】:
我很抱歉重复这个问题,但我无法理解(我认为我的问题是什么)指针。有人可以为我解释一下吗?我已经浏览了一堆 stackoverflow 问题、c 教程和它最令人困惑的问题,因为每个解决方案似乎都相互矛盾 - 如果我看到我的代码被修复,我相信这将有助于我完全理解
1 #include <stdio.h>
2 getinput()
3 {
4 int *employeeSalary[5];
5 int i;
6 for(i=0;i<5;i++)
7 {
8 printf("Enter details of employee no. %d :",i+1);
9 scanf("%d",&employeeSalary[i]);
10 }
11 return(*employeeSalary);
12 }
13
14 int payrise(int *employeeSalary[])
15 {
16 int *newSalary = ((employeeSalary*0.20)*100);
17 return(*newSalary);
18 }
19
20 int highestSalary(int *newSalary)
21 {
22 int i = 0;
23 int biggestSalary;
24 int element;
25 if(newSalary[i] >= newSalary[i])
26 {
27 biggestSalary = newSalary[i];
28 element = i;
29 }
30 return(biggestSalary, element);
31 }
32
33 void display(int *employeeSalary, int *newSalary, int biggestSalary, int element)
34 {
35 printf("The old salary was %d and the new one is %d ", employeeSalary, newSalary);
36 printf("The biggest salaray is %d in element %d", biggestSalary, element);
37 }
38
39
40 int main()
41 {
42 int initialSalary = getinput();
43 int payIncrease = payrise(initialSalary);
44 int largestSalary = highestSalary(payIncrease);
45 display(initialSalary, payIncrease, largestSalary);
46 return(0);
47 }
这些是我遇到的错误
11: error: invalid type argument of ‘unary *’ (have ‘int’)
16: error: invalid operands to binary * (have ‘int ***’ and ‘double’)
17: error: invalid type argument of ‘unary *’ (have ‘int’)
45: error: too few arguments to function ‘display’
【问题讨论】:
-
这只是一堆指针错误。例如:第 4 行
employeeSalary是指向int的指针数组。因此getinput()的返回类型应该是int* -
正如您的编译器报告的那样,您不能这样做
16 int *newSalary = ((employeeSalary*0.20)*100); -
int initialSalary = getinput();再次getinput()返回一个指针。所以initialSalary应该是int*。但是,我看不到,为什么您对每个变量都使用指针... -
感谢您的帮助@hhachem
标签: c arrays function pointers