第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

將int-C的空值*轉(zhuǎn)換為2D數(shù)組

將int-C的空值*轉(zhuǎn)換為2D數(shù)組

C
慕無忌1623718 2019-06-16 15:11:21
將int-C的空值*轉(zhuǎn)換為2D數(shù)組我試圖在C中轉(zhuǎn)換一個空*指向int*2D數(shù)組的指針。下面是我試圖使用的代碼(刪除了所有無關(guān)的比特):\*assume that i have a data structure called graph with some   *element "void** graph" in it and some element "int order" */void initialise_graph_data(graph_t *graph){     void **graph_data = NULL;     int (*matrix)[graph->order];     size_t size = (graph->order * graph->order) * sizeof(int);     graph_data = safe_malloc(size); /*safe malloc works fine*/     matrix = (int(*)[graph->order])graph_data;     graph->graph = graph_data;}當(dāng)我編譯它時,它工作得很好,但是給了我一個警告:變量“矩陣”是設(shè)置的,但沒有使用。我真的不想使用臨時矩陣變量,因為函數(shù)應(yīng)該只是初始化數(shù)組,而不是在數(shù)組中放置任何內(nèi)容;但是,如果我試圖將圖形_data直接轉(zhuǎn)換為int*時,當(dāng)我將它輔助到圖->圖時,如下所示:graph->graph = (int(*)[graph->order])graph_data;它給我一個來自不兼容指針類型警告的賦值。我只是投錯了嗎?有人對我如何使它在沒有臨時“矩陣”變量的情況下工作有任何建議嗎?或者如果沒有,我能用這個變量做些什么,這樣它就不會給我警告,它已經(jīng)設(shè)置了,但沒有被使用。謝謝
查看完整描述

1 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗 獲得超9個贊

編譯器是對的,數(shù)組(或指向數(shù)組的指針)與指向指針的指針不一樣。想想它們在記憶中是如何排列的:

以數(shù)組形式表示的大小為MXN的矩陣:

+--------------+--------------+-----+----------------+--------------+-----+------------------+
| matrix[0][0] | matrix[0][1] | ... | matrix[0][N-1] | matrix[1][0] | ... | matrix[M-1][N-1] |
+--------------+--------------+-----+----------------+--------------+-----+------------------+

a和指針形式相同的“矩陣”:

+-----------+-----------+-----------+-----+
| matrix[0] | matrix[1] | matrix[2] | ... |
+-----------+-----------+-----------+-----+
  |           |           |
  |           |           V
  |           |           +--------------+--------------+-----+
  |           |           | matrix[2][0] | matrix[2][1] | ... |
  |           |           +--------------+--------------+-----+
  |           |
  |           V
  |           +--------------+--------------+-----+
  |           | matrix[1][0] | matrix[1][1] | ... |
  |           +--------------+--------------+-----+
  |
  V
  +--------------+--------------+-----+
  | matrix[0][0] | matrix[0][1] | ... |
  +--------------+--------------+-----+

如果您分配正確的大小并不重要,這兩個變量只是不兼容,這正是編譯器告訴您的。


查看完整回答
反對 回復(fù) 2019-06-16
  • 1 回答
  • 0 關(guān)注
  • 315 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號