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語言結構體與連結串列
北風微風 include include define null 0 define len sizeof struct student struct student int n struct student creat void if n 0 head null p2 next null free ...
c語言中陣列指標和結構體指標問題
樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...
c語言結構指標和結構體成員指標問題
佼霏聞新竹 既是取地址符號,一個指標p指向q就需要寫作p q,在函式引數裡是 引用 就是別名,類似指標了,這種情況下對變數的修改會影響到函式外的原變數。那個printf a p n a 等於求出地址 x然後作為指標看待 p 所以也是yyyy了 樓主可以做個試驗,看看輸出結果地址間的關係,你就應該可以...