亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么c中二維數組聲明只能省略行數?

為什么c中二維數組聲明只能省略行數?

C
人心可畏1 2016-07-01 16:53:16
查看完整描述

4 回答

?
asd8532

TA貢獻143條經驗 獲得超187個贊

?? 將二維數組當作參數的時候,必須指明所有維數大小或者省略第一維的,但是不能省略第二維或者更高維的大小,這是由編譯器原理限制的。事實上,編譯器是這樣處理數組的:
? ? ? 設有數組int a[m][n],如果要訪問a[i][j]的值,編譯器的尋址方式為:
? ? ?&a[i][j]=&a[0][0]+i*sizeof(int)*n+j*sizeof(int); //注意n為第二維的維數,

因此,可以省略第一維的維數,不能省略其他維的維數。

? ? 在定義二維數組的時候對其進行初始化,也可以省略第一維,編譯器會根據你的初始化語句自動決定第一維度。


查看完整回答
5 反對 回復 2016-07-01
  • 人心可畏1
    人心可畏1
    還是不懂,原因
  • 袏冄
    袏冄
    我覺得你不要看sizeofint就看i*n+j就好了,這不就沒用到m也就是第一維么。
  • 了了二十二
    了了二十二
    n不確定無法找到地址,那i也不確定啊,這又是怎么找到地址的呢
點擊展開后面1
?
玄幻癡迷

TA貢獻2條經驗 獲得超2個贊

  1. 二維數組存儲的時候是"先行后列",, 如果不指定列數, 它就不能知道一行放幾個數據了。

  2. 在初始化的時候,第二維的數字代表分配內存的長度,第一維的數字代表分配內存倍數
    倍數可以讓機器去數,但長度沒有的話就不好開辟空間了。

查看完整回答
1 反對 回復 2018-01-07
?
小霧3378873

TA貢獻5條經驗 獲得超0個贊

那就先把他放下,別太糾結,等把尋址等相關知識掌握了,再返過頭來看,就會明白了,實際上我也沒看懂,^_^等我學到后面知識后一定會來看!

查看完整回答
反對 回復 2016-07-01
  • 4 回答
  • 2 關注
  • 8353 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號