(C語言)int num31,2,3,4,5,6為什麼是對的

2021-09-12 06:37:22 字數 2704 閱讀 1730

1樓:

num是一個多維陣列,每行有3個int型元素。由於多維陣列的儲存方式實際上也是類似於一維陣列那樣連續存放的,所以對於形如 這種型別,其實與, , }這種形式的存放方式是完全一樣的,這也是多維陣列必須指定除第1箇中的大小的原因,因為沒有後面的大小,c語言是無法正確地區分這片連續記憶體究竟是幾行幾列。

而, {}, {}}這種形式則是顯示地指明瞭陣列中的每行元素構成。

對於 int num[ ][3] = ,3,4,5,6}, 由於有了,所以第一行已經明確了,而第二行則從 3開始,由於每行有3列,所以第二行可以確定為 3,4,5這三個元素,而第三行則只有6這一個元素。由於元素已經全部明確,所以即便沒有指定num的行數,其實程式已經很明確第算出了它的行數為3。

ls說的 「系統自動設定int num[2][3]」是錯誤的,你自己可以驗證。

#include

int main()

,3,4,5,6};

for(int i = 0; i < 3; ++i)

for(int j = 0; j < 3; ++j)

printf("%d%d = %d\n", i, j, num[i][j]);

return 0;

}輸出:

00 = 1

01 = 2

02 = 0

10 = 3

11 = 4

12 = 5

20 = 6

21 = 0

22 = 0

2樓:帽子狗

int num[ ][3] = ,3,4,5,6};

賦值時會自動根據第二維的大小來確定第一位的數這裡一共6個數 而第二維定為3

所以系統自動設定為int num[2][3]

請問int x[][3]={0}; int x[][3]={{1,2,3},{4,5,6}};如何理解其中的[]?

3樓:聽不清啊

a. int x[2][3]=; 陣列共6個元素,全部初始化了。

b. int x[3]=; 陣列只要一行就夠了,共三個元素。

c. int x[3]=,}; 陣列有2 行(由初始化的資料個數確定),每行3個元素。

4樓:淳延

1. int x[2][3]=,,}

(1)這句的左邊含義是:有一個二維陣列,2行3列,一共就是6個int型別的資料。

(2)這句的右邊含義是:最裡面的三個花括號,代表的是三行,每個花括號裡有兩個資料,代表的是每行有2列,所以代表的意思是:3行2列的一個int型別的二維陣列。

(3)2行3列和3行2列的兩個二維陣列,當然是不一樣的。所以把後者賦值給前者。

2. int x[3]=:代表的是行數未知,列數是3的二維陣列,把該陣列裡的陣列全部賦值為0。

(1)int x[3]=,}:這個等號右邊是2行3列的int型別的資料

(2)等號左邊的x[3]代表的是:行數未知,列數是3的二維陣列,由於賦值操作,於是可以得出行數是2。

(3)所以x[3]是一個2行3列的一個二維陣列,即:x[2][3]。

5樓:匿名使用者

就是讓編譯器猜有幾行

c語言中*(*a+1)什麼意思 int a[3][4]={{1,3,5,7},{2,4,6,8}};*(*a+1)的值

6樓:

*(*a+1)==3。

7樓:逆戰

*(*a+1)這種寫法是錯的,a是陣列第一個元素的地址,*a=1,*(*a+1)=*2,這明顯是錯的。

c語言的問題 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; p = a;

8樓:匿名使用者

因為p[0]和p[1]分別指向4個整數

如果你是需要將p[1]指向的4個整型資料一次性賦值給p[0]指向的4個單元,那麼c語言沒有這麼簡單的賦值,只好編個程式一個一個地賦值;

如果你是需要把p[0]指向p[1],那麼你可以寫:p[0]=&p[1];

9樓:

我試了,p[0]為不可修改的左值。

只知道這個語句本身是有問題的,p[1]是依賴p[0]的。p[0]怎麼可能由p[1]賦值呢?

或許彙編的角度更有說服力。期待正解!

c語言 int a;int b; }d[3] ={{1,4},{2,5},{6,7}}; printf("%d\n",d[2].a* d[2].b/d[1].b);

10樓:吾乃蘿莉控

a【】【】,第一個【】表示的是行數,第二個【】表示的是列數。a【】【】=,,}即二維表示就是

1 2 3

4 5

6 7

,所以三行三列嘛

求採納為滿意回答。

11樓:匿名使用者

c,6 * 7 / 5 取整。

c語言題目:若有說明int a[][5] =({1,2,3},{4,5},{6,7});則陣列a的第一框大小為()

12樓:匿名使用者

表示二維陣列,第一個表示行數,第二個表示每一行最大容量。

所以第一框為 3。

C語言與C語言能夠共用嗎C語言和C語言的區別是什麼?

可以共用的。具體取決於使用的編譯器。使用c編譯器 c編譯器是不支援編譯c 的。因為c 有很多c語言標準沒有定義的擴充套件。所以同時存在純c和c 的話是不能通過c編譯器的編譯的。使用c 編譯器c 是c語言的擴充套件延伸,c 設計之初就考慮了完全相容c語言的。所以純c或是混合c c 專案都是可以被c 編...

C語言的問題C語言問題C語言問題

若有說明語句double p,a 則能通過scanf語句正確給輸入項讀入資料的程式段是 解 p a 將a的地址賦值給p,scanf lf p 從鍵盤獲取一個數值賦值給地址p指向的變數 所以選d 有函式fun的定義形式如下。int fun float f 則以下對函式fun的呼叫語句中,不正確的是 a...

C語言問題,c語言問題?

一 c語言規定總是從main 開始執行的 這個函式也叫 主函式 因此,你發來的題目中的 1 6 8 敘述都是錯誤的,都應該選擇f。二 第2題中,c語言對其資料在記憶體中所佔用的實際位元組數,隨著程式中宣告的資料型別以及資料的多少而變化,c語言本身並沒有明確規定。這題應該選f。三 第3題,c語言中強制...