結構體中成員變數引用和區別?egpnum5和p

2021-03-04 01:51:21 字數 6279 閱讀 7164

1樓:匿名使用者

沒有更不更好,而是實際應該選擇什麼.

.用於物件

->用於指標引用

在c語言中,指標p無論是指向結構體變數,還是結構體陣列,都能用p->num 表示num的值,怎麼理解啊?

2樓:陳慧玉

宣告bai struct student 型別

struct student

{int num;

int score;

};然後du定義zhi

乙個struct student 型別的變數dao stu;定義如下:

struct student stu;

如果要用

回結構體中的成員 用法答 stu.num; . 表示成員運算子

用指標也可達到同樣的效果

定義乙個指標變數p,它指向乙個 struct student型別的資料。意思是把結構體的起始位址賦給指標變數p;

struct student *p;

使用結構體中變數 方法為 (*p).num //注意括號不能省,因為「.」優先於「*」;

*p表示p 指向的結構體變數。

為了方便和使之直觀,可以把(*p).num改寫成 p->num 來代替。

結構體陣列其實和結構體變數是乙個道理

希望你可以理解

3樓:匿名使用者

結構體的bai指標的p->num表示num的值,這個很du容易理解。而結構zhi體陣列

dao的版指標,其實就像陣列的名稱一樣,

權均表示該陣列的起始位址。所以p->num也表示num的值,只是表示的是陣列中第乙個結構體中num的值。這樣講不知道你明白嗎??

4樓:熱血的鴿子

寫**最

復好理制解了:

baistruct ss ss1;

struct ss *p = &ss1;

p->num = 10; // 這裡du和zhi

dao ss1.num = 10 等價

struct ss ss2[10];

p = ss2;

p->num = 12 // 這裡和 ss2[0].num = 12 等價

5樓:匿名使用者

不一樣的,指標指向結構體陣列時,應該是p[i]->num

6樓:匿名使用者

你可以理解為p.num,這樣就好理解了吧

7樓:帝國戰士

指標指向結構體陣列時也是只能指向其中乙個元素,不是指向整個陣列的所有元素

8樓:大滿

p->num不是表示num的值 而是他在結構中的變數

9樓:淘汰

這個我覺得你就記住這種表達方式就可以了吧,

(你覺得我說的不對,別理我就是,不要噴我哦)

p->num是什麼意思

10樓:心緣水心

p->num 是程式語言中的結構指標。

p是定義的結構

內體型別,num是定義的結構變容量,p->num是取結構變數的值。

p->num用在比如c++語言中,相當於c語言中的p.num。

取得結構變數的值後,就可以將將這個值賦給其他變數或者直接參與運算了。

11樓:飯飯★鈴鐺

p是結構指來針,num,score是結構自變數,p->num,p->score是取結構變

量的值,如

struct node

;struct node *p;

(p++)->num與 (++p)->num有什麼區別

12樓:it孤鶩

p++ 的值為p

++p的值為 (p+1)

所以(++p)->num

的值是(p+1)->num

13樓:高二介佳豪門將

這裡p應該是指標,始終記著p++是先使用,後自增。++p是先自增後使用。 這類區別很容易就判斷出來了,

請教一下c語言中結構體中—>和.的區別和聯絡,我看到有的地方不能用->,而有的地方又不能用.具體是怎麼回

14樓:匿名使用者

如果來變數是定義成一般的結自

構體變數,用

bai.如果變數是定義du成結構體指標變數,則用->即定義zhi了一dao個結構體的變數(例項)後可以用.直接呼叫其內部成員。而定義成結構體的指標則需用指標->來訪問成員。

例如:struct student

; struct student p, *q;

int x;

x = p.score;

x = q-> score;

15樓:匿名使用者

struct stu

stu , *p;定義乙個結構體變數,乙個結構體指標stu.num 用結構體變數引用結構成員p->num 用結構體指標引用結構成員

16樓:假寳毓

規定如下

物件.變數copy

名指標-> 變數名

1.如果

bai變數是定義du

成一般的zhi結構體變dao量,用.

2.如果變數是定義成結構體指標變數,則用->例如:

struct student

; struct student p, *q;

int x;

x = p.score;

x = q-> score;

17樓:匿名使用者

當定義了乙個結來構體的變數(例項自)後可以用bai.直接呼叫其du內部成員。而定義成結構zhi體的指標dao則需用指標->來訪問成員。

如:struct1 m_struct;//就用.,如:m_struct.***;

struct1 *m_struct;//就用->,如:m_struct->***;

c語言裡面,這個符號(->)是什麼意思呢,怎麼用呢?

18樓:瘋狂通訊

這是結構體指標中的乙個符號,給你寫個程式解釋一下吧,例如:

#include

struct stu //定義乙個結構體

stu;

int main()

看到了吧,->的作法就是在引用結構體中的變數!!

形式如:p->結構體成員(如p->num)他的作用相當於stu.num或(*p).num不知道這樣解釋你明不明白、、、、、不懂了call我,o(∩_∩)o~望採納。

19樓:匿名使用者

「指向」的意思,常用於結構體指標變數訪問成員。

延展:運算子「->」,通過結構體指標變數直接獲得結構體變數的成員變數,一般形式如下:

結構體指標變數-> 成員變數

其中「結構體指標變數」為結構體指標變數,「成員變數」為結構體成員變數名稱,「->」為運算子。

c語言:

一、簡介:

c語言是一種計算機程式語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的d.m.

ritchie於2023年推出,2023年後,c語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到c語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。

二、編輯開發:

1、編譯器:

gcc,gnu組織開發的開源免費的編譯器

mingw,windows作業系統下的gcc

clang,開源的bsd協議的基於llvm的編譯器

visual c++:: cl.exe,microsoft vc++自帶的編譯器

2、整合開發環境(ide):

codeblocks,開源免費的c/c++ ide

codelite,開源、跨平台的c/c++整合開發環境

orwell dev-c++,可移植的c/c++ide

c-free

light table

visual stdio系列

3、hello world:

下面是乙個在標準輸出裝置 (stdout) 上,印出 "hello, world!" 字串的簡單程式。

20樓:匿名使用者

通過結構體指標變數獲得其結構體變數的成員變數的一般形式如下:

(*結構體指標變數). 成員變數

其中「結構體指標變數」為結構體指標變數,「成員變數」為結構體成員變數名稱,「.」為取結構體成員變數的運算子。

另外c語言中引入了新的運算子「->」,通過結構體指標變數直接獲得結構體變數的成員變數,一般形式如下:

結構體指標變數-> 成員變數

其中「結構體指標變數」為結構體指標變數,「成員變數」為結構體成員變數名稱,「->」為運算子。

21樓:匿名使用者

成員指示符。用來訪問乙個自定義資料型別的成員,如:

struct s

;s *p,node; cout

22樓:匿名使用者

->這個在引用指標時候可以,但是.只能引用結構體的成員,你學到連結串列時候就知道,畢竟c語言基礎也必須學連結串列,引用指標就不能用.了,所有->功能更強。

23樓:匿名使用者

「指向」的意思,常用於結構體指標變數訪問成員。

24樓:匿名使用者

取指標型結構體的成員符。

什麼是結構型別變數?與結構體成員變數有什麼區別??

25樓:仁昌居士

結構型別變數是一些組合成乙個整體的不同型別的資料變數,雖然各個變數分別屬於不同的資料型別,但是它們之間密切相關,各種資訊都屬於同乙個人。這時,可以宣告乙個結構型別,由多種變數組成。變數可以是基本資料型別,也可以是自定義的資料型別。

結構型別變數與結構體成員變數區別為:記憶體單元不同、編譯不同、賦值不同。

一、記憶體單元不同

1、結構型別變數:系統為結構型別變數分配實際的記憶體單元,並在其中存放具體的資料。

2、結構體成員變數:結構體成員變數系統不為之分配實際的記憶體單元。

二、編譯不同

1、結構型別變數:在編譯時,系統不為結構型別變數的型別分配空間。

2、結構體成員變數:在編譯時,系統為結構體成員變數的型別分配空間。

三、賦值不同

1、結構型別變數:不同結構型別的變數不允許相互賦值,即使它們有相同的成員。

2、結構體成員變數:結構體成員變數的為。不同結構體只要有相同的成員,允許相互賦值。

26樓:無理想主義者

結構體型別變數就是你定義的結構體型別,然後宣告了乙個這種型別的變數。

而結構體成員變數就是你申明的這個結構體變數中的乙個成員,他是乙個變數變數。

舉個例子:

struct bird

;這是乙個結構體,而他僅僅是個類,是記憶體的一種組織方式,是沒有實體的。

現在用它定義乙個變數,

bird a;

這個a就是乙個結構體變數,是乙個類的物件,在佔用了一塊記憶體的。

而a.num,是這個變數中的乙個成員變數,一旦a被構析,num也就存在了。

而a:fly(),是這個變數中的乙個成員函式。

這樣應該很清楚了吧。

27樓:shine雪瑞

「結構」是一種構造型別。如同在說明和呼叫函式之前要先定義函式一樣,那麼在說明和使用之前必須

先定義它。結構既是一種「構造」而成的資料型別,它是由若干「成員」組成的,叫做結構每乙個成員可以是乙個基本資料型別或者又是乙個構造型別。結構體是由一系列具有相同型別或不同型別的資料構成的資料集合,是乙個變數變數結構體型別變數就是定義的結構體型別。

而結構體成員變數就是申明的這個結構體變數中的乙個成員,然後宣告了乙個這種型別的變數,也就是構造它

結構體型別變數就是你定義的結構體型別,然後宣告了乙個這種型別的變數。

而結構體成員變數就是你申明的這個結構體變數中的乙個成員,他是乙個變數變數

結構型別變數的定義

在定義某個結構型別後,程式設計師就可以說明該結構型別的記憶體變數。它的說明形式與前面介紹的簡單資料型別的變數說明基本上一致

結構體型別變數的引用,結構體變數的使用和引用

和其他型別變數的引用一樣呀,就是另外起乙個別名,兩者表示同乙個物件 實體 結構體變數的使用和引用 c語言,老師問了乙個問題 為什麼在定義結構體變數之前,必須先定義結構體型別?定義變數,就是在記憶體中申請空間,資料型別就與系統的約定,按照什麼樣的資料型別的儲存格式和計算邏輯對待。所以定義變數都需要指明...

給結構體中的變數賦值,如何給包含結構體變數的結構體變數賦初值

是因為你使用指標時還沒分配記憶體。可以這樣 typedef struct l1 sdt sdt s s.name k1 或者用下面的方法 include 在開頭處包括標頭檔案 sdt s1 sdt malloc sizeof sdt s1 name k1 這兩種方法都行 你的指標變數s1是不是沒有初...

C 中怎麼檢測結構體中是否存在某個變數

前段時間看到的 模板函式,檢查t是否有名為 s 的成員 value 為bool型檢查結果 type為s成員的型別 value為true是有效 templatestruct has member s 使用方法 struct foo if has member s value cout s 當然還可以配...