功能什么都不做

时间:2014-06-13 18:32:31

标签: 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;
}

头文件InvMatriz.h

#ifndef INVMATRIZ_H_
#define INVMATRIZ_H_

float** ingresematriz(int );
void mostrarmatriz(float**X ,int x);

#endif // INVMATRIZ_H

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;
}

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");


    }
}

1 个答案:

答案 0 :(得分:5)

该行

void mostrarmatriz(A,n);

不会调用mostrarmatriz,但会声明函数void mostrarmatriz(int,int)(参数的int类型是旧的“隐式int”规则。删除该行中的void,将调用您的函数。

如果您使用警告编译代码,编译器会告诉您。