c語言a m 1 為什麼報錯?

2025-01-25 15:40:09 字數 1254 閱讀 4958

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迴圈小括號裡第一個 ...