【发布时间】:2013-08-12 13:32:44
【问题描述】:
- 我收到如下警告:“从不兼容的指针类型传递 'arraySumLoc' 的参数 1”
- 通过函数arraySumLoc()得到的结果不正确,无法找出原因。
- 如果我希望在数组声明期间使用 maloc(),应该进行哪些修改。
#include<stdio.h>
#include<conio.h>
typedef struct item {
double cost;
double commission;
} item;
typedef struct loc {
int x;
int y;
} loc;
double arraySumLoc(struct item *arr, loc fromLoc, loc toLoc) {
double sumOfCost = 0.0;
int fromX, fromY, toX, toY, indexX, indexY;
if (fromLoc.x > toLoc.x) {
fromX = toLoc.x;
toX = fromLoc.x;
} else {
fromX = fromLoc.x;
toX = toLoc.x;
}
if (fromLoc.y > toLoc.y) {
fromY = toLoc.y;
toY = fromLoc.y;
} else {
fromY = fromLoc.y;
toY = toLoc.y;
}
for(indexX = fromX; indexX <= toX; indexX++) {
for (indexY = fromY; indexY <= toY; indexY++) {
sumOfCost += ((struct item*)(arr+indexX))[indexY].cost;
}
}
return sumOfCost;
}
int main() {
int i, j, row, col;
printf("Enter number of row: ");
scanf("%d", &row);
printf("Enter number of Column: ");
scanf("%d", &col);
struct item product[row][col];
for(i = 0; i < row; i++) {
for(j = 0; j < col; j++) {
scanf("%lf", &product[i][j].cost);
}
}
loc fromLoc, toLoc;
fromLoc.x = 0;
fromLoc.y = 0;
toLoc.x = row - 1;
toLoc.y = col - 1;
printf("\n\nSum of cost : %.2lf", arraySumLoc((struct item**)(&product), fromLoc, toLoc));
getch();
return 0;
}
【问题讨论】:
-
欢迎来到 Stack Overflow!你能指定错误信息吗?
-
@Scientious Sure:
incompatible pointer types passing 'struct item (*)[5][10]' to parameter of type 'struct item *' -
还有read this。
-
你希望
arr[indexX][indexY]和arr只是一个指向struct的指针应该做什么?另外,请将您的问题简化为一个最小的示例,这样我们就不必遍历所有与您的问题无关的事情。 -
顺便说一句,这不是动态数组。
标签: c function dynamic struct multidimensional-array