Hi there. I'm new to the forum and this is my first time posting here. I'm a newbie at C and I'm experiencing a pointers problem. Here's the code:

It is supposed to be a program that receives a matrix and a vector and multiplies them. It compiles, but when it goes to the function Show_Matrix it shows completely different values, so the result is wrong. I've tried Splint debugger so I go the folling messages:Code:`#include <stdio.h>`

float *mult_matrix(int n, float *p, float *q);

float *get_matrix(int m, int n);

void show_matrix(int m, int n, float *p);

int main(void)

{

int n;

float *a, *b, *x;

printf("\nEnter the size of the linear system: \n");

scanf("%d", &n);

a=get_matrix(n, n);

show_matrix(n, n, a);

b=get_matrix(n, 1);

show_matrix(n, 1, b);

x=mult_matrix(n, a, b);

show_matrix(n, 1, x);

return 0;

}

float *mult_matrix(int n, float *p, float *q)

{

int i, j;

float X[n];

float *x;

for(i=0; i<n; i++) {

X[i]=0;

}

for (i=0; i<n; i++) {

for(j=0; j<n; j++) {

X[i]=X[i]+(*p)*(*q);

p++;

q++;

}

q=q-n;

}

x=X;

return x;

}

float *get_matrix(int m, int n)

{

int i, j;

float *a, A[m][n];

a=&A[0][0];

for (i=0; i<m; i++) {

for (j=0; j<n; j++) {

printf("\nEnter with the element a%d%d of the matrix:", i+1, j+1);

scanf("%f", a);

a++;

}

}

a=a-m*n;

return a;

}

void show_matrix(int m, int n, float *p)

{

int i, j;

printf("\n");

for (i=0; i<m; i++) {

printf("\n");

for (j=0; j<n; j++) {

printf(" %f ", *p);

p++;

}

}

printf("\n");

}

Splint 3.1.2 --- 03 May 2009

matrix.c: (in function main)

matrix.c:13:2: Return value (type int) ignored: scanf("%d", &n)

Result returned by function call is not used. If this is intended, can cast

result to (void) to eliminate message. (Use -retvalint to inhibit warning)

matrix.c:22:11: Fresh storage a not released before return

A memory leak has been detected. Storage allocated locally is not released

before the last reference to it is lost. (Use -mustfreefresh to inhibit

warning)

matrix.c:15:2: Fresh storage a created

matrix.c:22:11: Fresh storage b not released before return

matrix.c:17:2: Fresh storage b created

matrix.c:22:11: Fresh storage x not released before return

matrix.c:19:2: Fresh storage x created

matrix.c: (in function mult_matrix)

matrix.c:37:9: Value X[] used before definition

An rvalue is used that may not be initialized to a value on some execution

path. (Use -usedef to inhibit warning)

matrix.c:45:9: Stack-allocated storage x reachable from return value: x

A stack reference is pointed to by an external reference when the function

returns. The stack-allocated storage is destroyed after the call, leaving a

dangling reference. (Use -stackref to inhibit warning)

matrix.c:43:2: Storage x becomes stack-allocated storage

matrix.c:45:9: Returned storage x not completely defined (*x is undefined): x

Storage derivable from a parameter, return value or global is not defined.

Use /*@out@*/ to denote passed or returned storage which need not be defined.

(Use -compdef to inhibit warning)

matrix.c:43:2: Storage *x allocated

matrix.c: (in function get_matrix)

matrix.c:57:4: Return value (type int) ignored: scanf("%f", a)

matrix.c:64:9: Returned storage a not completely defined (*a is undefined): a

matrix.c:52:2: Storage *a allocated

matrix.c:3:8: Function exported but not used outside matrix: mult_matrix

A declaration is exported, but not used outside this module. Declaration can

use static qualifier. (Use -exportlocal to inhibit warning)

matrix.c:46:1: Definition of mult_matrix

matrix.c:4:8: Function exported but not used outside matrix: get_matrix

matrix.c:65:1: Definition of get_matrix

matrix.c:5:6: Function exported but not used outside matrix: show_matrix

matrix.c:80:1: Definition of show_matrix

Finished checking --- 12 code warnings

Please, could somebody help me and tell me what's going on? Cheers.