Iva*_*anz -1 c file parameter-passing pass-by-reference
我无法使函数mostrarmatriz()工作.该程序从头到尾编译和运行没有错误,但函数mostrarmatriz()没有显示任何东西.当我将该功能复制到主功能时,它可以完美地工作.看来我通过引用传递值时遇到了问题.请帮忙,我被困住了.
Main.c文件:
#include "InvMatriz.h"
#include <stdio.h>
int main(int argc, char **argv)
{
float **A;
int n;
printf("Ingrese el tamaño de la matriz: ");
scanf("%d", &n);
A = ingresematriz(n);
void mostrarmatriz(A, n);
printf("adfasd");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
头文件InvMatriz.h
#ifndef INVMATRIZ_H_
#define INVMATRIZ_H_
float** ingresematriz(int );
void mostrarmatriz(float**X ,int x);
#endif // INVMATRIZ_H
Run Code Online (Sandbox Code Playgroud)
Ingrese Matriz.c文件
#include "InvMatriz.h"
#include <stdio.h>
float **ingresematriz(int n)
{
int i, j;
//Asigna espacio en la memoria
float **A;
A = malloc(n * sizeof (float *));
for (i = 0; i < n; i++)
{
*(A + i) = malloc(n * sizeof(float));
}
//Pide los elementos y los guarda
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
printf("Elemento [%d] [%d]: ", i + 1, j + 1);
scanf("%f", *(A + i) + j);
}
}
return A;
}
Run Code Online (Sandbox Code Playgroud)
Mostrar Matriz.c文件
#include "InvMatriz.h"
#include <stdio.h>
void mostrarmatriz(float **X , int x) //Porque no hace nada pero si compila?
{
int i, j;
for (i = 0; i < x; i++)
{
for (j = 0; j < x; j++)
{
printf("%f ", *(*(X + i) + j));
}
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
这条线
void mostrarmatriz(A,n);
Run Code Online (Sandbox Code Playgroud)
不调用mostrarmatriz,但它声明了一个函数void mostrarmatriz(int,int)(int参数的类型是旧的"隐式int"规则).删除该void行,您的函数将被调用.
如果您使用警告编译代码,编译器会告诉您.