在C語言中,指向結構體對象的指針變量既可以指向結構體變量,也可指向結構體數組中的元素。
指針變量的基類型必須與結構體變量的類型相同。
C語言中允許
(*p).num用p->num來代替
->代表一個箭頭
p->num表示p所指向的結構體變量中的num成員
C語言指向結構體數組的指針
(++p)->num
先使p自加1,然后得到p指向的元素中的num成員值。
(p++)->num
先求的p->num的值,然后再使p自加1。
C語言用結構體變量和結構體變量的指針作函數參數
用結構體變量的成員作參數,用法和用普通變量作實參是一樣的,屬于“值傳遞”方式。應當注意實參與形參的類型保持一致。
用結構體變量作實參。用結構體變量作實參時,采取的也是“值傳遞”的方式,將結構體變量所占的內存單元的內容全部按順序傳遞給形參,形參也必須是同類型的結構體變量。
用指向結構體變量(或數組元素)的指針作實參,將結構體變量的地址傳給形參。
C語言使用結構體指針輸出生日
#include
#include
struct Age
{
int year;
int month;
int day;
};
struct Student
{
char name[20];//姓名
struct Age birthday; //生日
};
int main(void)
{
struct Student student1; //定義結構體變量student1
struct Student *point =NULL; //定義一個指向Student結構體類型的指針變量point
point = &student1;//point指向結構體變量student1的首地址, 即第一個成員的地址
strcpy((*point ).name,"閆小林");//(*point).name等價于student1.name
(*point ).birthday.year =1989;
(*point ).birthday.month =4;
(*point ).birthday.day =29;
printf("姓名:%s\\n", (*point ).name);//(*point).name不能寫成point
printf("生日:%d-%d-%d\\n", (*point).birthday.year, (*point).birthday.month, (*point).birthday.day);
return 0;
}
編譯運行結果:
姓名:閆小林
生日:1989-4-29
--------------------------------
Process exited after0.04992 secondswith return value0
請按任意鍵繼續. . .
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
C語言
+關注
關注
180文章
7624瀏覽量
139450 -
指針
+關注
關注
1文章
484瀏覽量
70855 -
結構體
+關注
關注
1文章
130瀏覽量
10986
發布評論請先 登錄
相關推薦
嵌入式linux學習筆記20160822-每天進步一點點,向嵌入式進軍-C語言指針/結構體
->C語言/C++學習指南(語法篇)入門到精通,作者是邵方,是根據他寫的C語言/
發表于 08-22 11:32
單片機C語言 -- 基于結構體的面向對象編程技巧
1、Keil4 C51工程網址:2、需要一定的C語言基礎,才看得懂此文。一、面向對象單片機C語言的面向對象編程,是利用
發表于 02-04 21:48
C語言結構體對函數指針封裝示例
C語言結構體對函數指針封裝示例示例:#include int i, j;struct DATE{ int year; char month;
發表于 07-15 06:18
C語言入門教程之C語言其實很簡單的PPT課件資料免費下載
本文檔的主要內容詳細介紹的是C語言入門教程之C語言其實很簡單的PPT課件資料免費下載包括了:概述,數據類型運算符和表達式,順序
發表于 06-03 08:00
?13次下載

詳解C語言指針底層基本原理
說到指針,估計還是有很多小伙伴都還是云里霧里的,有點“知其然,而不知其所以然”。但是,不得不說,學了指針,C語言才能算是入門了。
評論