結構體指標的問題,結構體指標和結構體中的指標的區別

時間 2021-12-22 20:58:54

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...