gpt4 book ai didi

c - 警告 : format ‘%d’ expects type ‘int’ , 但参数 2 的类型为 ‘int (*)(int *, int *, int)’

转载 作者:行者123 更新时间:2023-11-30 21:27:58 27 4
gpt4 key购买 nike

所以我是新来的,我的问题没有得到很好的回应...所以我对其进行了编辑以提供更多信息。

我正在尝试编写一个调用主程序中两个函数的程序。这是我到目前为止所拥有的:

#include <stdio.h>

#define N 10

int inner_product(int a[], int b[], int n);
int inner_product_reverse(int a[], int b[], int n);

int main(void) {
int a[N], b[N], i;

printf("Enter the first array of size 10: ");
for (i = 0; i < N; i++)
scanf("%d", &a[i]);

printf("Enter the second array of size 10: ");
for (i = 0; i < N; i++)
scanf("%d", &b[i]);

printf("Inner product is: %d\n", inner_product);
printf("Inner product reverse is: %d\n", inner_product_reverse);
return 0;
}

int inner_product(int a[], int b[], int n) {
int sum = 0, i;
for (i = 0; i < N; i++)
sum += (a[i] * b[i]);
return sum;
}

int inner_product_reverse(int a[], int b[], int n) {
int sum = 0, i;
for (i = 0; i < N; i++)
sum += (a[i] * b[(N-1)-i]);
return sum;

但我收到标题中的错误。我知道这是调用的参数数量差异的问题,但我不确定如何以考虑函数所有参数的方式编写它。我是否必须以某种方式将计算内积的 for 循环移至 main 中?谢谢。

最佳答案

问题在于调用 printf 函数,如警告所述。

printf("Inner product is: %d\n", inner_product);
printf("Inner product reverse is: %d\n", inner_product_reverse);

inner_productinner_product_reverse 是返回 int 并接受 3 个参数的函数:int (*)(int *, int *, int) .

现在要获取 int 结果,请调用这两个函数。您所做的是将它们的指针(位置)传递给 printf 函数,这是错误的。

您应该将代码重写为类似以下内容:

//                               Parameters are added and function will be called
printf("Inner product is: %d\n", inner_product(a, b, i));
printf("Inner product reverse is: %d\n", inner_product_reverse(a, b, i));

关于c - 警告 : format ‘%d’ expects type ‘int’ , 但参数 2 的类型为 ‘int (*)(int *, int *, int)’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46557148/

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