69,373
社区成员
发帖
与我相关
我的任务
分享
int *matvec(int **A, int *x, int n)
{
int i, j;
int *y = (int *)malloc(n * sizeof(int));
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
y[i] += A[i][j] * x[j];
return y;
}
int main()
{
int i;
int a[n][n] = {1, 2, 3, 4};
int x[n] = {1, 2};
for(i = 0; i < n; i++)
for(j = 0; j < n; j++)
printf("%d", *(matvec(&a[i][j], x, n)); //
return 0;
}
int *stackref()
{
int val;
return &val;
}
[/quote]
通常来说返回局部变量的指针是不行的, 函数运行完后, 局部变量就被回收了, 指向的内存可能被分配来做其他事情了. 不过看你这个函数的名字似乎有特殊的用途, 也许在特定的用法下是没问题的, 看你怎么使用这个函数的, 用它来完成什么功能的了.int *stackref()
{
int val;
return &val;
}
[/quote]
这个val是在栈上分配的内存,函数返回之后,这个函数所占用的栈内存可能会被其他的变量使用。
如果真的想返回指针的话,先malloc这个val,然后再返回指针,不过这个时候需要自己去释放。int *stackref()
{
int val;
return &val;
}