求助一个函数传递数组的问题

andochiwa 2020-06-27 07:26:52
C语言新手,求助一个问题
高斯消去法求解方程组的代码,在53行处报错,读取位置时发生访问冲突,自己试了一下发现好像是数组参数没有传递到被调函数里去,请问该怎么解决这个问题?
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#define SIZE 5

void gauss(float** A,float* b);

float x[SIZE]; //近似解

int main(void)
{
int i, j;
float sum = 0;
//Ax=b
float A[SIZE][SIZE];
float b[SIZE];
srand((unsigned)time(NULL));
printf("A=\n");
for (i = 0; i < SIZE; i++)
{
for (j = 0; j < SIZE; j++)
{
A[i][j] = rand()/(RAND_MAX + 1.0);
printf("%f\t", A[i][j]);
}
printf("\n");
}
printf("b=\n");
for (i = 0; i < SIZE; i++)
{
for (j = 0; j < SIZE; j++)
{
sum += A[i][j];
}
b[i] = sum;
printf("%f\n", b[i]);
}
gauss(A, b);
gauss_pivot(A, b);
;
return 0;
}


void gauss(float** A,float* b)
{
int i,j,k;
float m,s;
for (i = 0; i < SIZE - 1; i++)
{
for (j = i + 1; j < SIZE; i++)
{
m = A[j][i] / A[i][i];
for (k = j; k < SIZE; k++)
{
A[j][k] = A[j][k] - m * A[i][k];
}
b[j] = b[j] - m * b[i];
}
}
x[SIZE - 1] = b[SIZE - 1] / A[SIZE - 1][SIZE - 1];
printf("x[%d]=%f\n", SIZE, x[SIZE - 1]);
for (j = SIZE - 2; j >= 0; j--)
{
s = b[j];
for (k = j + 1; k < SIZE; k++)
{
s = s - A[j][k] * x[k];
}
x[j] = s / A[j][j];
printf("x[%d]=%f\n", k, x[j]);
}
return;
}


...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiu_shaofeng 2020-06-27
  • 打赏
  • 举报
回复
void gauss(float A[][size],float* b); gauss(A, b);
qybao 2020-06-27
  • 打赏
  • 举报
回复
void gauss(float** A,float* b)
改成
void gauss(float (*A)[SIZE],float* b)
andochiwa 2020-06-27
  • 打赏
  • 举报
回复
引用 1 楼 qiu_shaofeng 的回复:
void gauss(float* A,float* b);//传float数组,用二级指针float **有误

A是二维数组唉,我把形参从指针改成数组也是一样的问题
qiu_shaofeng 2020-06-27
  • 打赏
  • 举报
回复
void gauss(float* A,float* b);//传float数组,用二级指针float **有误

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧