作者chrisjon (蟲蟲終於找到你家)
看板C_and_CPP
標題[語法] 結構、指標 與 二維陣列
時間Fri Sep 4 16:06:34 2009
爬文結果,大多是一維或非結構,所以自己試寫一下
目的:把seed寫在結構中(有需要用到)
然後把seed設定二維陣列
下面程式只是純粹測試state->seed[a][b]有無辦法使用
======================================
#include <stdio.h>
typedef unsigned long long b64;
typedef struct {
int mcgi,flaga,flagb;
b64 *seed[2][97];
}tt_index;
int main(void)
{
tt_index *state;
state->seed[1][1] = 5;
printf("state->seed[1][1]=%d\n", state->seed[1][1]);
return;
}
======================================
爬文看到有人直接把一維寫在struct裡,所以在struct裡設二維試試
compile能過,但是執行卻失敗了
或者需要設定二(多)層指標嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.137.179
1F:→ james732:看不太懂你想要做的事情是什麼…? 09/04 16:11
2F:推 VictorTom:state是一個pointer, 沒有自己的實體空間, 要嘛不要用* 09/04 16:18
3F:→ VictorTom:那麼可以state.seed, 要嘛你要malloc/new幫它要一個空間 09/04 16:19
4F:→ VictorTom:不然你這樣只是存取了一個不知道在哪裡的指標, 是應該要 09/04 16:19
5F:→ VictorTom:access violation / run time error的....@_@" 09/04 16:19
6F:→ chrisjon:那請問一下,如果原始一維陣列已經可以使用,轉成二維陣列 09/04 16:25
7F:推 VictorTom:struct裡只要memory塞的下, 要幾維都沒關係吧.... 09/04 16:26
8F:→ VictorTom:問題1. 你state只是一個指標, 你不能在未分配空間之前就 09/04 16:26
9F:→ VictorTom:直接access它的member; 又, 你的seed看起來也宣告成了指 09/04 16:26
10F:→ VictorTom:標型式, 這裡看起來不太有意義, seed應該只是二維的b64 09/04 16:27
11F:→ VictorTom:array而已吧?? 09/04 16:27
※ 編輯: chrisjon 來自: 123.195.137.179 (09/04 16:29)
12F:→ chrisjon:嗯嗯!我看書上沒寫到malloc/new相關的字樣,所以也不太清 09/04 16:37
13F:→ chrisjon:楚。不過想到一個替代方案了,感謝前輩的解釋(m_ _m) 09/04 16:38