gpt4 book ai didi

c - 使指针指向整数而不进行强制转换

转载 作者:太空宇宙 更新时间:2023-11-04 02:46:16 25 4
gpt4 key购买 nike

我的代码有点问题。编译器告诉我,我的代码在没有转换的情况下创建了一个指向整数的指针。现在我不熟悉这意味着什么所以也许有人可以指出(双关语非常有意)我在正确的方向。也将不胜感激任何一般提示!

准确的错误是:

Homework3.c: In function ‘main’:
Homework3.c:32: warning: passing argument 1 of ‘add’ makes pointer from integer without a cast
Homework3.c:16: note: expected ‘int (*)[5]’ but argument is of type ‘int’

 #include <stdio.h>
#include <stdlib.h>
#define INPUT_FILE_NAME "amounts.txt"
#define PRODUCTS 5
#define SALESPERSON 4
#define AMOUNT 1449
#define TOTALS 20

void printOut(int [SALESPERSON][PRODUCTS], float [TOTALS]);
float add(int [SALESPERSON][PRODUCTS], float, float [TOTALS] );

int main(void){

FILE *inputFile;
int sales[SALESPERSON][PRODUCTS];

float data = 0.0;
float totals[TOTALS];
int count;

inputFile = fopen(INPUT_FILE_NAME, "r");
for ( count = 0; count < AMOUNT; count++){
fscanf(inputFile, "%d", sales[SALESPERSON]);
fscanf(inputFile, "%d", sales[SALESPERSON][PRODUCTS]);
fscanf(inputFile, "%f", &data);
add(sales[SALESPERSON][PRODUCTS], data, totals[TOTALS]);
}
fclose(inputFile);

printOut(sales[SALESPERSON][PRODUCTS], totals[TOTALS]);

return 0;
}

void printOut(sales[SALESPERSON][PRODUCTS], totals[TOTALS]){

int count2 = 0;
int count3 = 0;
int count4 = 0;

for(count2 = 0; count2 < SALESPERSON; count2++){
for(count3 = 0; count3 < PRODUCTS; count3++){
printf("Sales Person %d \t Product%d \t Total: %.2f\n", count2, count3, totals[count4]);
++count4;
}
}
return ;
}

void add(sales[SALESPERSON][PRODUCTS], data, totals[TOTALS]){


if(sales[SALESPERSON] == 1){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[0] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[1] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[2] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[3] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[4] += data;
}
}
else if(sales[SALESPERSON] == 2){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[5] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[6] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[7] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[8] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[9] += data;
}
}
else if(sales[SALESPERSON] == 3){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[10] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[11] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[12] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[13] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[14] += data;
}
}
else if(sales[SALESPERSON] == 4){
if(sales[SALESPERSON][PRODUCTS] == 1){
totals[15] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 2){
totals[16] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 3){
totals[17] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 4){
totals[18] += data;
}
else if(sales[SALESPERSON][PRODUCTS] == 5){
totals[19] += data;
}
}

}

最佳答案

sales[SALESPERSON][PRODUCTS] 返回 sales< 中位置 SALESPERSON 引用的数组的位置 PRODUCTS 处的整数。你只需要通过sales:

add(sales, data, totals); //same thing with totals

你也没有给出函数数组的长度,所以你的定义应该是:

void add(int[][] sales, float data, float[] totals)

关于c - 使指针指向整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27052082/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com