在下面的代码中,我想打印一个3×3矩阵,其中填充了o
。但是我没有得到想要的结果。如果使用C99编译器运行程序,则第一个矩阵输出就是我所期望的,第二个输出就是我所得到的。 如果我不做初始化函数init()
如果我在main()
中进行初始化,它工作正常。但我不知道为什么数组没有从init()
正确返回,所以我可以使用它作为display()
函数中的一个参数。请帮助我无法从函数传递返回的字符数组作为另一个函数中的参数
#include<stdio.h>
char * init(int a)
{
char tic[a][a];
for(int i=0;i<=(a-1);i++)
{
for(int j=0;j<=(a-1);j++)
{
tic[i][j]='o';
}
}
display(a,tic);//This is extra code just to show what I desire to print through this program
return (char *)tic;
}
int display(int a,char tic[a][a])
{
for(int i=0;i<=(a-1);i++)
{
for(int j=0;j<=(a-1);j++)
{
if(j==0)
{
printf("\n-------------\n|");
}
printf(" %c |",tic[i][j]);
}
}
printf("\n-------------");
return 0;
}
int main()
{
int a=3;
display(a,init(a));
return 0;
}
@Sebivor我的问题是完全不同的 – Shubham
似乎你想从'init'函数返回一个局部变量(数组)的地址。你不能那样做。局部变量的范围只在该函数内。阅读“全局变量”和“malloc()”。 – babon
这实际上不是关于范围,而是存储时间。范围是标识符的可见性,并且在此代码中没有与该标识符相关的错误。但是,或者更明确地说,存储期限是指存储期限以外的对象... – Sebivor