C語言中連結串列中的結構體指標變數問題求教

時間 2021-07-08 21:31:47

1樓:

定義結構體指標變數時,只分配儲存指標型別需要的空間,比如listnode *p;這裡p有給他分配儲存指標的4個位元組的空間。

實際上你是要讓p指向一個結構體空間的,這個結構體空間在哪?

可以先定義listnode a;

然後 p=&a;

這時p指向一個之前申請分配過空間(編譯器設定過其地址和大小,在棧空間存放著了)。

現在我們要讓p指向一個臨時決定分配的空間(我們需要用來儲存輸入資訊或計算資訊),並讓p指向他,使得之後我們隨時通過p來訪問他。於是使用malloc先分配記憶體,並把malloc返回的地址賦值給p。在這裡,我們不能使用定義臨時結構體變數並讓p之前他(就如上面所說的p=&a),因為在子函式定義的變數,他們都是分配在子函式被呼叫時為其建立的棧空間,子函式退出時這些空間被釋放**,我們定義的變數生命結束,他們所在地址會被其他子函式被呼叫時建立棧空間所重用,那些地址很可能被新函式使用並修改所存資料。

這是我們不敢想象的,為了資料安全,必須使用malloc分配記憶體,因為malloc分配的記憶體是在堆空間分配,只有使用free後,其記憶體才會釋放,才能被其他地方重新分配。

2樓:匿名使用者

宣告結構體指標變數的時候,難道沒有為其分配記憶體嗎?

a:沒有,需要malloc

這和普通的指標分配沒有區別。

typedef struct stu

stu_t;

void main()

3樓:透明的沙漏

指標宣告的時候只是開闢了一個存放地址的記憶體,不管你這個指標是指向物件的還是char還是別的型別,指標宣告開闢的空間是一樣的,因為對於指標來說它存的只是地址,至於地址裡面的是char還是long對於宣告指標的記憶體是沒有關係的,所以如果指標要裝東西,需要malloc一個記憶體來存放char或者long型的東西

4樓:匿名使用者

在3kw的電爐盤上裝上5kw的爐絲可以嗎

c語言 單連結串列 結構體指標 賦值想等 說明什麼?

5樓:德昂當

=不是相等,這是賦值的意思

相等是比較的意思,比較兩個數相等用 == 雙等號p=h 賦值,就是把h的地址值賦值給 p ,為以後的操作準備。

h 中放的首地址,p 中放當前前一個節點,此時只有一個首地址,p中也放首地址。

後面,新生成後一個結構體節點,就會把新的放到p中。

其實p中放的一直是當前最後一個節點的地址,這樣在新生成的節點後,才會把新生成的節點地址放入當前節點(即新生成的前一個節點)中的 link中。

link中放的是下一個節點的地址。

6樓:謝應宸

=不是相等,是賦值

p=h就是將指標變數h儲存的地址內容賦給p,這樣就表示指標p和h指向了同一塊記憶體

c語言中相等比較是用的==

7樓:匿名使用者

結構體指標相等,確實是表示都指向同一個結構體。

一般連結串列只需要知道頭指標head即可,然後遍歷頭指標就可以訪問連結串列中所用的元素。

所以head的值不能變~~,所以一般要遍歷連結串列,需要定義一個臨時指標,首先指向頭部,然後逐個往下遍歷

一般就是

p=head;

while(p!=null)

你的程式不完整·可能還有些沒出現~ 看函式名字應該是增加節點吧,增加節點可能有比較的專案,那就需要遍歷列表,這點接和順序表有差別了

順序表查詢容易,替換難, 連結串列是查詢難(遍歷),替換容易

關於c語言結構體指標的問題,求大神回答....

8樓:燕歸來

在c1=(order*)malloc(sizeof(order));

c2=(goods*)malloc(sizeof(goods));

c3=(customer*)malloc(sizeof(customer));

下面添復加

c1->a=(goods*)malloc(sizeof(goods));

c1->c=(customer*)malloc(sizeof(customer));

因為你雖然製為c1,

baic2,c3分配了空間,

du但是沒有為c1中的zhigood *a和customer *c分配空dao間

9樓:匿名使用者

void main()

C語言,結構體中的陣列怎麼賦值,C語言中結構體中的陣列,不能直接賦值嗎

1 用字元常量逐個初始化陣列。例如 char a 8 把8個字元依次分別賦給c 0 c 7 這8個元素。如果在定義字元陣列時不進行初始化,則陣列中各元素的值是不可預料的。如果花括號中提供的初值個數 即字元個數 大於陣列長度,則出現語法錯誤。如果初值個數小於陣列長度,則只將這些字元賦給陣列中前面那些元...

c語言中結構體的頭指標相等,會不會把其中覆蓋了

會不會是你理解錯了,這只是建立了個頭結點嘛,頭結點的下一個指向自己而已 樓主你好。rear nextarc temp rear temp 這兩行 的意思是先讓尾節點的nextarc指向temp,然後再將尾節點指標指向temp,相當於在連結串列尾部新增了一個節點。沒有覆蓋一說,這裡只有指標的賦值。這段...

c語言中變數的平方怎麼輸入,C語言中變數的平方怎麼輸入

天雲一號 在c 中,變數a的平方可以有2種方式進行輸入 1 直接本身相乘a a 2 用函式pow進行求變數a的平方,即pow a,2 注 函式pow的用法如下 函式格式 double pow double x,double y 功 能 計算x的y次冪 返 回 值 計算結果 當使用pow函式時,需要將...