C語言問題

2023-02-10 20:55:57 字數 1146 閱讀 1322

1樓:

樓上答案有問題

在c中陣列的宣告中只有第一維是可以省略的,如果在宣告時不賦值,則哪一維都不可省略,這和c在記憶體中儲存陣列的方式有關

上面的a是錯誤的,因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的

你可以在機器上試著編譯一下

2樓:

第一維是可以省略 因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的 !找一個c方面的書一看就知!

3樓:

上面的a是錯誤的,因為編譯器無法知道這是一個3*幾的二維陣列,也就是結果不確定,你可以是3*3的,也可能是3*2的,計算機是不能容許在邏輯上不確定的,所以編譯器會給出錯誤

而b是正確的,因為編譯器清楚地知道它的每一行有三個元素,這樣上面的**就會產生一個int c[1][3]的陣列,如果你定義int c[3]=;那麼就會生成一個int c[2][3],不會存在邏輯二義性,所以是符合語法規範的 !找一個c方面的書一看就知!

4樓:

a對b錯

因為a中雖然沒有給出列數,但是由後面的值情況,編譯器就可以確定是3*3的陣列

b中沒有給行數只給了列數為3,而且從後面的值仍然無法知道行數,這將導致編譯器無法確定該給這個陣列分配多少個儲存單元,故錯誤!

5樓:匿名使用者

第一個錯,缺少下標。你定義的三維陣列,元素個數未定義。

第二個正確,動態陣列

6樓:

第二個錯:第一個的第一維是可以省略的!!!

c語言問題,C語言問題

struct student拼寫成struct studnt了。拼寫錯誤 struct studnt沒有定義,所以無法執行sizeof。include typedef struct student int main c語言問題?嗯你的理解是對的,break就是用來跳出的switch,如果沒有brea...

c語言問題,c語言問題

首先你這個程式輸入個數是不可控的,n沒起到作用,因為你控制輸入的迴圈已經規定了i是從0到99,必須要輸入100個。而你這個 自認為統計總人數 的n n i,相當於n 1 2 3 那是不可能的。while xh i scanf d d xh i sg i n i sum sum sg i 用美元符號做...

c語言問題,C語言問題

if判斷句中,x 1 是真命題,所以x被賦值為1,y x,所以y被賦值為1。下一條語句,y y 1,所以y 2。所以x 1,y 2 c語言問題?這句迴圈的bai意義是從索引9開始du 向左遍歷元素,直到i j結束。zhi 整段代dao碼是接收鍵盤輸版入一個值,按大小順序插權入到陣列。第一個迴圈是從陣...