1樓:楚劒蘭心
.是呼叫操作符,->是對指標的解引用然後再呼叫,只有指標呼叫別的變數或函式時使用,並且只要是用指標來呼叫的話,就必用它。
比如:struct s
{int value;
……};
s *p; //定義一個結構體指標
p->value;//呼叫結構體內的變數。也就是(*p).value;二者等價。
2樓:公珍碧魯哲
struct
l;粗略回答一下,malloc(size_t)是分配記憶體空間的,l*p
=(l*)malloc(sizeof(l)),你不主動釋放free(),這個記憶體空間有效,可以通過你所謂的首地址找到,然後訪問其中的資料。但是這個空間只有大小,和訪問規則-----即你可以通過p->找到結構體中的變數,但是這些變數都沒有初始化,訪問結果未知。ll;
//這個步驟大概是這樣,mallloc(sizeof(l))分配記憶體空間給l變數,l內的資料被預設初始化
l*pl
=&l;
//應該這樣寫
pl的值就是為
l分配的記憶體空間的首地址值。
p和pl兩個沒有實質的區別,兩個地址都有效,一個被預設初始化,一個沒有。
說的有點亂,還是沒有徹底理解。見笑了。
結構體指標和結構體中的指標的區別
3樓:啞然
1、針對的資料型別不同:
結構體指標:結構體指標對變數。
結構體中的指標:結構體中的指標指成員。
2、針對的含義不同:
結構體指標:指向結構體型別的指標。
結構體中的指標:指成員指標。
3、用法不同:
結構體指標:
struct a;struct a m,*p=&m;
p就是struct a型別的結構體指標,指向了同型別的結構體變數m。
結構體中的指標:
struct b
成員是指float型別的指標,next成員是指struct b型別的指標。
4樓:天天向上知識店鋪
結構體指標是指指向結構體型別變數的指標。
如: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型別的指標。
5樓:匿名使用者
如果有個叫做 abc 的結構體,結構體指標就是 abc *結構體中的指標,就是它有個成員是指標
struct abc;
6樓:
這裡的b成員是指float型別變數的指標,next成員是指struct b型別變數的指標。
float、struct b都只是一種資料型別,是不佔用記憶體的,故沒有指標;
只有float或struct b定義的變數才會有指標(如:float a;a為變數就佔記憶體,就有地址即指標)
結構體指標問題
7樓:
**中,已經強制轉換為struct node *型別了;
當然:可能你的理解是賦值的情況;
指標型別中儲存的值賦值給普通型別的變數的時候需要加*,例:
int *a; int b; b=*a; 這種情況才加*,表示取指標a儲存的值賦值給b;反之:
a=&b; 表示a指向儲存b的地址;
關於結構體指標問題,還有函式指標作為結構體成員的問題
雪豹出擊 int changevar int 你少些了個e這是一個函式指標,這個changevar指標指向一個這樣的函式 這個函式有一個int型引數,返回值也是int.所以if fb info.changevar 的意思就是判斷結構體fb info中的changevar是否為空,等同於if fb i...
c語言結構指標和結構體成員指標問題
佼霏聞新竹 既是取地址符號,一個指標p指向q就需要寫作p q,在函式引數裡是 引用 就是別名,類似指標了,這種情況下對變數的修改會影響到函式外的原變數。那個printf a p n a 等於求出地址 x然後作為指標看待 p 所以也是yyyy了 樓主可以做個試驗,看看輸出結果地址間的關係,你就應該可以...
c語言中陣列指標和結構體指標問題
樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...