error C2664:不能将参数 1 从“int (*)[10][10]”转换为“int *” 5

#include<stdio.h>#defineN10structmatrix{intm[N][N];};voidmultiply(int*pA,int*pB,int*p... #include <stdio.h>
#define N 10
struct matrix
{
int m[N][N];
};
void multiply(int *pA,int *pB,int *pC,int n)
{
struct matrix temp;
int i,j,k;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
temp.m[i][j]=(*pA[j*n+k])*(*pB[k*n+j])+temp.m[i][j];
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
*pC[i*n+j]+=*pC[i*n+j]+temp.m[i][j];
}
}
}
int main()
{
struct matrix A,B,C;
int n=0,i=0,j=0;
/*····*/
multiply(&A.m,&B.m,&C.m,n);
/*·····*/
return 0;
}
省略的是输入和输出,问下 error C2664: “multiply”: 不能将参数 1 从“int (*)[10][10]”转换为“int *”怎么解决呀?应该怎么把A,B,C的指针传递给函数呀?
展开
 我来答
xoaxa
2015-06-19 · TA获得超过8611个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3500万
展开全部
#include <stdio.h>

#define N 3

typedef struct matrix {
int m[N][N];
}matrix;

matrix multiply(matrix A,matrix B,int n) {
int i,j,k;
matrix C;
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
C.m[i][j] = 0;
for(k = 0; k < n; k++) {
C.m[i][j] += A.m[i][k] * B.m[k][j];
}
}
}
return C;
}

void show(matrix a,int n) {
int i,j;
for(i = 0; i < n; ++i) {
for(j = 0; j < n; ++j)
printf("%4d",a.m[i][j]);
printf("\n");
}
}

int main() {
matrix A = {2,0,3,1,3,2,1,1,2};
matrix B = {0,1,2,0,1,3,2,1,1};
matrix C;
int n = 3;
printf("MATRIX A:\n");
show(A,3);
printf("MATRIX B:\n");
show(B,3);
C = multiply(A,B,n);
printf("MATRIX C:\n");
show(C,3);
return 0;
}
csj946
2015-06-19 · 超过17用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:28.3万
展开全部
应该是这样吧:multiply(A.m, B.m, C.m,n);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式