C語言結構體指標詳解 - 程式人生
文章推薦指數: 80 %
比如指向struct STUDENT 型別的結構體變數,那麼指標變數就一定要定義成struct STUDENT* 型別。
下面將前面的程式用指標的方式修改一下:. # include >結構體指標,C語言結構體指標詳解
結構體指標,C語言結構體指標詳解
阿新••發佈:2018-12-06
結構體指標,可細分為指向結構體變數的指標和指向結構體陣列的指標。
指向結構體變數的指標
前面我們通過“結構體變數名.成員名”的方式引用結構體變數中的成員,除了這種方法之外還可以使用指標。
前面講過,&student1表示結構體變數student1的首地址,即student1第一個項的地址。
如果定義一個指標變數p指向這個地址的話,p就可以指向結構體變數student1中的任意一個成員。
那麼,這個指標變數定義成什麼型別呢?只能定義成結構體型別,且指向什麼結構體型別的結構體變數,就要定義成什麼樣的結構體型別。
比如指向structSTUDENT型別的結構體變數,那麼指標變數就一定要定義成structSTUDENT*型別。
下面將前面的程式用指標的方式修改一下:
#include
從該程式也可以看出:因為指標變數p指向的是結構體變數student1第一個成員的地址,即字元陣列name的首地址,所以p和(*p).name是等價的。
但是,“等價”僅僅是說它們表示的是同一個記憶體單元的地址,但它們的型別是不同的。
指標變數p是structSTUDENT*型的,而(*p).name是char*型的。
所以在strcpy中不能將(*p).name改成p。
用%s進行輸入或輸出時,輸入引數或輸出引數也只能寫成(*p).name而不能寫成p。
同樣,雖然&student1和student1.name表示的是同一個記憶體單元的地址,但它們的型別是不同的。
&student1是structSTUDENT*型的,而student1.name是char*型的,所以在對p進行初始化時,“p=&student1;”不能寫成“p=student1.name”。
因為p是structSTUDENT*型的,所以不能將char*型的student1.name賦給p。
此外為了使用的方便和直觀,用指標引用結構體變數成員的方式:
(*指標變數名).成員名
可以直接用:
指標變數名->成員名
來代替,它們是等價的。
“->”是“指向結構體成員運算子”,它的優先順序同結構體成員運算子“.”一樣高。
p->num的含義是:指標變數p所指向的結構體變數中的num成員。
p->num最終代表的就是num這個成員中的內容。
下面再將程式用“->”修改一下:
#include
指向結構體變數的指標
前面我們通過“結構體變數名.成員名”的方式引用結構體變數中的成員,...
二叉樹的鏈式儲存結構及實現(C語言完整程式碼+詳細註釋)
鏈式儲存結構儲存二叉樹,實際上就是採用連結串列儲存二叉樹。
既然是使用連結串列,首先需要構建連結串列中節點的結構。
考慮到儲存物件為二叉樹,其各個節點最多包含...
C語言正則表示式詳解
標準的C和C++都不支援正則表示式,但有一些函式庫可以輔助C/C++程式設計師完成這一功能,其中最著名的當數PhilipHazel的Perl-Compat...
C語言專案的建立詳解
最近為方便記錄我的IT學習生活和相關經驗,於是將有關自己對對相關知識的見解置於CSDN部落格上,以供各位學習交流...
C語言預處理命令詳解
本文參考諸多資料,詳細介紹常用的幾種預處理功能。
因成文較早,資料來源大多已不可考證,敬請諒解。
全文字數2萬,閱讀時間50分鐘,建議先收藏。
...
C語言中volatile關鍵字詳解
volatile關鍵字詳解,以及在嵌入式中的應用
volatile關鍵字的作用是作為指令關鍵字,確保本條指令不會因為編譯器的...
C語言位元組對齊詳解
一、什麼是對齊,以及為什麼要對齊:
1.現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可...
C語言結構體與結構體指標用法總結
在C語言開發中,結構體用到的機會很多。
所謂結構體,就是定義一種裡面包含多種元素的變數。
我們來看一個簡單的例子。
比如你想定義...
【C語言】結構體包含指向自己的指標
執行環境:VC6.0
例子程式:tets.c
********************************************************...
c語言結構體指標初始化
今天來討論一下C中的記憶體管理。
記得上週在飯桌上和同事討論C語言的崛起時,講到了記憶體管理方面
我說所有指標使用前都必須初...
搜尋
基礎教學
Mysql入門
Sql入門
Android入門
Docker入門
Go語言入門
Ruby程式入門
Python入門
Python進階
Django入門
Python爬蟲入門
最近訪問
結構體指標,C語言結構體指標詳解
HTTP請求錯誤400、401、402、403、404、405、406、407、412、414、50
malloc、calloc、realloc之間的區別
用VS2010開啟VS2012專案解決方案
KVM切換器經過廣大人民的勞動,已經可以多功能使用
基於.NetCore3.1系列+——+日誌記錄之日誌核心要素揭祕
作業4,版權保護
蒙特卡羅(Monte+Carlo)方法計算圓周率π
LATEX教程(二)
關於Unity中粒子效果的使用
延伸文章資訊
- 1C語言學習筆記:結構體與指標 - IT人
結構體結構體定義與C++不同的是,C語言中定義結構體必須加上關鍵字struct,而C++中結構體是一個類的關鍵字,故可以不加。 struct persin{ char ...
- 2結構體(C語言) - 維基百科,自由的百科全書
在C語言中,結構體(struct)指的是一種資料結構,是C語言中複合資料類型(aggregate data type)的一類。結構體可以被聲明為變數、指標或陣列等,用以實現較複雜的 ...
- 3[C 語言] 程式設計教學:如何使用結構(Struct) | 開源技術教學網
由於C 沒有內建的物件導向語法,使用指向結構的指標來模擬C++ (或Java 或C#) 的this ... 由於我們從堆積(heap) 動態配置記憶體,在程式尾段要記得將記憶體釋放掉。
- 4C語言結構體指標詳解 - 程式人生
比如指向struct STUDENT 型別的結構體變數,那麼指標變數就一定要定義成struct STUDENT* 型別。 下面將前面的程式用指標的方式修改一下:. # include < ...
- 5第十一章結構與其它資料型態
利用sizeof() 得到結構所佔用的記憶體空間 ... 於程式中定義結構變數student,並以指標ptr 指向它 ... C/C++ 裡並沒有提供這樣的語法, 但是習慣上大家都用.