今天我遇到了這段代碼,同時在C編程語言課程中輔導了一些學生。 練習要求實現兩個功能。第一個掃描來自用戶的輸入,第二個顯示之前掃描的內容。 我碰到的代碼如下:在gcc下的C代碼中的奇怪行爲4.4.3
#include <stdio.h>
void myInput(int i,int n)
{
int cpt;
int tab[n];
for (cpt=0; cpt<n; cpt++)
{
printf("Enter a number :");
scanf("%d",&i);
tab[cpt]=i;
}
}
void myDisp (int n)
{
int tab[n];
int cpt;
for (cpt=0; cpt <n; cpt++)
{
printf("%d ", tab[cpt]);
}
}
int main()
{
int n; int i;
printf(" Entrer the numbers of elements you want: \n");
scanf("%d \n",&n);
int tab[n];
myInput(i,n);
myDisp(n);
}
儘管此代碼是充滿矛盾的,但它實際上是在GCC 4.4.3工作:它會顯示已輸入的數字! !!!!! 有誰知道這些代碼是如何工作的?
非常感謝
供將來參考:請突出顯示您的代碼並按下Ctrl + K或點擊'0 1'按鈕等來設置您的代碼格式。謝謝。 – birryree 2010-12-03 16:53:07
這是完全有效的C99,從我所能看到的。 – Electro 2010-12-03 16:57:03
@Electro,@birryree:他可能正在研究`myDisp`中未初始化變量`tab`的使用。 – Thanatos 2010-12-03 16:59:07