在下面的代碼中,我想打印一個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