1樓:格里程式設計辦公技巧
如果你的編譯器支援最新的c語言標準c99,這個**是可以通過編譯的;
如果不是則不能通過,老的標準裡面必須是數值;
但是可以換成char *a = malloc(sizeof(char)*n);最後不用的時候記得用free(a)釋放記憶體。
2樓:岔路程式緣
c語言中,定義陣列的大小時,只能使用常量,不能使用變數或表示式。
所以,它只能使用:
數字:如等。
int a[100];
已經定義為常量的標誌符:如前面已經有。
#define m 100
後面可以:int a[m];
不能使用:變數:哪怕是賦值過的也不行。
如int m=100;
int a[m];也會出錯;
表示式:即使常數也不能用表示式。
如int a[m+1];
int a[m+1];
都會出錯。這是c語言規定的,沒有道理。
3樓:網友
c語言不支援變數作為陣列長度,通常做法是定義乙個大數m,輸入的值小於m即可。
#define m 1000
int m;
char a[m];
printf("輸入m值(m<1000):");
scanf("%d",&m);
fun(a,m);
4樓:網友
可變長陣列需要編譯器支援c99標準
顯然你的編譯器不支援(或是沒有開啟c99支援選項),可使用動態記憶體分配變相實現
5樓:網友
m+1中的m是變數,定義陣列不允許使用變數。
關於c語言的問題,為什麼結果是a[1][3]=18 。
6樓:金色潛鳥
結果是 輸出 m,n,x 三個值。
迴圈體 裡 有 if(x存放到 x 裡。 所以 輸出語句 輸出 的 x 是 最大元素值 18。
注意, x=a[j][k], m=j, n=k; 這段東西 是 「逗號表示式」--3個式子算1個式子。
理解成 if(x所以 輸出 a[1][3]=18。
7樓:戚涵潤
a=1的值永遠是1,不能是其它值(賦值表示式的值就是變數賦值後的值)a==1的值可以是1或者0(邏輯表示式)
c語言請問為什麼這兒pow函式會報錯
vlookup d4,a 2 b 111,3,0 引數table array為 a 2 b 111,一共只有兩列,引數table array,col index num 2,而你輸入的是3,當然返回quot n aquot c語言 請問為什麼這兒pow函式會報錯?檢查你的c 安裝目錄下 includ...
在c語言中1是什麼意思,c語言中1是什麼意思
在c語言中 1 的意思是 將1的二進位制名 向左移20位。左移一位專相當於對該數屬 乘2,左移n位就相當於乘n個2。把1,位左移20位 按二進位制來移動 在32位機中,十進位制的1就是 00000000 00000000 00000000 00000001,位左移20位就是 00000000 000...
c語言裡for(1)是什麼意思,C語言裡for( 1 )是什麼意思?
永遠為真的for迴圈語句。迴圈語句由迴圈體及迴圈的判定條件兩部分組成,其表示式為 for 單次表示式 條件表示式 末尾迴圈體 表示式皆可以省略,但分號不可省略,因為 可以代表一個空語句,省略了之後語句減少,即為語句格式發生變化,則編譯器不能識別而無法進行編譯。擴充套件資料 for迴圈小括號裡第一個 ...