我不断收到错误 C2440'=':无法从"int *(__cdecl *)(int *,int *,int,int)"转换为"int *

  • 本文关键字:int cdecl 转换 错误 C2440 c++
  • 更新时间 :
  • 英文 :


我在c = sum_matrix部分不断收到错误。

C2440 '=':无法从 'int *(__cdecl *((int *,int *,int,int(' 转换为 'int *

这是整个代码(虽然没有完成,因为我被卡在这里(:

#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <cstdio>
void read_matrix(int*, int, int);
int* sum_matrix(int*, int*, int, int);
void main()
{
int a[20][20], b[20][20], i, n = 0, m = 0, * p, * q, * c;
printf_s("Enter the dimensions of the matrices: ");
scanf_s("%d %d", n, m);
p = &a[0][0];
q = &b[0][0];
read_matrix(p, n, m);
read_matrix(q, n, m);
c = sum_matrix;
}
int* sum_matrix(int* a, int* b, int n, int m)
{
int *c, i, j, p;
if (c = new int[n*m])
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
*(c + i * n + j) = *(a + i * n + j) + *(b + i * n + j);
return c;
}
void read_matrix(int* a, int n, int m)
{
int i = 0, j = 0;
printf_s("Enter the elements of the matrix (%d values): ", n * m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
scanf_s("%d", (a + i * n + j));
}

我正在使用Visual Studio 16.3.8

sum_matrix

是一个函数,你需要用括号来调用它,如下所示:

sum_matrix(a, b, c, d)

将 a,b,c,d 替换为要输入的参数。

我想你的意思是这样的:

#define _CRT_SECURE_NO_WARNINGS
#include <conio.h>
#include <cstdio>
void read_matrix(int*, int, int);
int* sum_matrix(int*, int*, int, int);
void main()
{
int a[20][20], b[20][20], i, n = 0, m = 0, * p, * q, * c;
printf_s("Enter the dimensions of the matrices: ");
scanf_s("%d %d", n, m);
p = &a[0][0];
q = &b[0][0];
read_matrix(p, n, m);
read_matrix(q, n, m);
c = sum_matrix(a, b, n, m);
}
int* sum_matrix(int* a, int* b, int n, int m)
{
int *c, i, j, p;
if (c = new int[n*m])
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
*(c + i * n + j) = *(a + i * n + j) + *(b + i * n + j);
return c;
}
void read_matrix(int* a, int n, int m)
{
int i = 0, j = 0;
printf_s("Enter the elements of the matrix (%d values): ", n * m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
scanf_s("%d", (a + i * n + j));
}

在主c = sum_matrix中,您分配cint*,而sum_matrix是具有签名的函数int* sum_matrix(int*, int*, int, int)

main中,sum_matrix没有输入参数。应该是c = sum_matrix(a, b, n, m).此外,c应该声明为一个int,而不是指向int(int*(的指针。

最新更新