1樓:佼霏聞新竹
&既是取地址符號,一個指標p指向q就需要寫作p=&q,在函式引數裡是“引用”,就是別名,類似指標了,這種情況下對變數的修改會影響到函式外的原變數。
那個printf("a
=%p\n",
&a);
等於求出地址***x然後作為指標看待(%p),所以也是yyyy了
2樓:匿名使用者
樓主可以做個試驗,看看輸出結果地址間的關係,你就應該可以理解了#include
#include
struct abc
*a;int main()
3樓:匿名使用者
只給指標分配了記憶體,沒個指標指向的內容分配記憶體。
4樓:樂酷科技
不是很清楚 應該成員都要分配空間的
5樓:匿名使用者
你的abc結構體,裡面都是指標,後面申請的空間實際上是100個連續的位元組空間,它將被解釋為100/(4+4)=12.5個結構體陣列元素.這樣說來, 你這種申請記憶體, 可能為你後面的使用埋下了巨大的隱患.
因為最後一個結構體只有一半的空間.後面如果定義了其他變數,它們可能被你覆蓋.
另外,你必須要對malloc的返回指標進行顯示的型別轉換.你寫的這個果斷不能通過編譯.還一堆錯誤在這裡, 不嚴謹呀!
c語言結構體指標問題
6樓:
你指標有沒有移動,輸出3次都是同一個節點,當然是一樣的了。
可以這版樣權
改試試:
p = freee ;
for(i=0;ipn,p->pfn);
p = p ->next ;}
7樓:_葉子妞妞
void main()
}你的連結串列一
bai直沒du有移動,列印出
zhi來的dao 始終是
回第一個節點的答。
8樓:
沒看全部,就最後那個迴圈,寫的printf("%d %d \n",freee->pn,freee->pfn);就是反覆輸出,freee->pn和freee->pfn),當然是一樣的。你意圖要幹啥?說清楚了才好改!
結構體指標變數與結構體成員指標問題
9樓:匿名使用者
typedef struct node aa; //定義了 aa可以當作型別 struct node
aa *p,a;這一句宣告瞭兩個變數 一個結構體指回針 和 一個結構體 。
答p=&a; //表示 結構體指標指向 結構體a的地址p->next=&a ;//表示 p指向的結構體 a 中的 結構體指標 也指向 a所在的地址
c語言裡結構體的問題。結構體定義指標型別是怎麼回事?
10樓:小笑笑狗狗
您好,您的問題是不是有點略多,下面一一為您解答:
1、typedef char **huffmancode 實際上是typedef (char *) *huffmancode。寫成這種形式更好理解, **huffmancode是指向指標的指標,這裡也可以理解為是指向字串的指標,因為char*字元陣列相當於字串。
2、*huffmantree表示指向結構體htnode的指標,htnode是typedef語法指定的結構體的別名,然後*huffmantree是在定義結構體的同時定義了指向結構體的指標。
3、指標只是一個地址,huffmantree作為結構體指標同樣是一個地址,因此不存在它內部有4個變數一說。嚴格意義上講是huffmantree這個指標指向的結構體中有這4個變數,而這4個變數和在main函式裡定義的普通變數一樣,都佔用實際記憶體,在新建結構體的同時為這4個變數分配記憶體空間。
4、ht=(huffmantree)malloc((m+1)*sizeof(htnode))。這個是malloc的語法,該語句的含義是分配m+1個htnode結構體佔用的記憶體,將分配的記憶體地址賦給ht。sizeof作用是判斷某個型別所佔用的記憶體空間,此處是計算htnode佔用的空間大小,然後(m+1)*sizeof(htnode)表示m+1個htnode,malloc是請求分配記憶體,(huffmantree)是強制型別轉化,將得到的記憶體地址強制轉化為huffmantree(即htnode指標型別)。
5、malloc是c語言中常用的動態分配記憶體的語法,劃重點“動態”,當你需要動態申請記憶體時(例如給陣列擴容,還有此處的為結構體申請空間)時用到該語法,c語言中記憶體相關語法還有realloc,free可以自行了解一下。在c++中new和delete更為常用。
11樓:銀霜傲雪
char **是指向指標的指標
huffmantree既不是變數也不是地址,是定義的一個別名,注意看struct前面還有一個typedef ,所以huffmantree是這個struct的指標的別名,所以huffmantree ht就可以看作是htnode *ht。
malloc是動態分配記憶體空間,在你事先不知道要分配多大空間的時候使用
12樓:米嵐
比如struct lnode*linklist;
lnode是結構變數名;
linklist就是指標,指向該結構體的指標。
呼叫內部應為:結構變數名.成員名
13樓:匿名使用者
malloc()分配一個記憶體單元 然後把這個單元的首地址賦給一個指標。huffmantree ht;只是定義一個htnode的指標並沒有給ht分配記憶體,所以必須用malloc給它分配一塊記憶體!
結構體指標和結構體中的指標的區別
14樓:啞然
1、針對的資料型別不同:
結構體指標:結構體指標對變數。
結構體中的指標:結構體中的指標指成員。
2、針對的含義不同:
結構體指標:指向結構體型別的指標。
結構體中的指標:指成員指標。
3、用法不同:
結構體指標:
struct a;struct a m,*p=&m;
p就是struct a型別的結構體指標,指向了同型別的結構體變數m。
結構體中的指標:
struct b
;struct b m,n; float bb=1.1;m.b=&bb;m.next=&n;b成員是指float型別的指標,next成員是指struct b型別的指標。
15樓:天天向上知識店鋪
結構體指標是指指向結構體型別變數的指標。
如:struct a
;struct a m,*p=&m;
這裡的p就是struct a型別的結構體指標,指向了同型別的結構體變數m;有這個指向操作後,以後用m和用*p是一樣的。
結構體中的指標是指成員指標。
如:struct b
;struct b m,n;
float bb=1.1;
m.b=&bb;
m.next=&n;
這裡的b成員是指float型別的指標,next成員是指struct b型別的指標。
16樓:匿名使用者
如果有個叫做 abc 的結構體,結構體指標就是 abc *結構體中的指標,就是它有個成員是指標
struct abc;
17樓:
這裡的b成員是指float型別變數的指標,next成員是指struct b型別變數的指標。
float、struct b都只是一種資料型別,是不佔用記憶體的,故沒有指標;
只有float或struct b定義的變數才會有指標(如:float a;a為變數就佔記憶體,就有地址即指標)
c語言的關於結構體中含有指標問題?
18樓:彭珂的課堂
c語言_071_指標的定義和使用_上
19樓:匿名使用者
這是對齊問題,是在編譯的時候,由編譯器根據所在的系統平臺來完成的。對齊的英文單詞為:align。
看篇文件,連結如下:(說明:可暫時不理解對齊這個東西,往後深入程式設計以後,慢慢體會就來了,過來人擔保,先不理解對齊,不會影響你學習程式設計。)
20樓:歡樂多
指標8位元組,64位程式嗎?
c語言中陣列指標和結構體指標問題
樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...
結構體指標的問題,結構體指標和結構體中的指標的區別
楚劒蘭心 是呼叫操作符,是對指標的解引用然後再呼叫,只有指標呼叫別的變數或函式時使用,並且只要是用指標來呼叫的話,就必用它。比如 struct s int value s p 定義一個結構體指標 p value 呼叫結構體內的變數。也就是 p value 二者等價。 公珍碧魯哲 struct l 粗...
關於結構體指標問題,還有函式指標作為結構體成員的問題
雪豹出擊 int changevar int 你少些了個e這是一個函式指標,這個changevar指標指向一個這樣的函式 這個函式有一個int型引數,返回值也是int.所以if fb info.changevar 的意思就是判斷結構體fb info中的changevar是否為空,等同於if fb i...