C語言結構體定義:struct為結構體關鍵字,tag為結構體的標志,member-list為結構體成員列表,其必須列出其所有成員;variable-list為此結構體聲明的變量。

創新互聯公司是專業的橋東網站建設公司,橋東接單;提供成都做網站、成都網站制作、成都外貿網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行橋東網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
結構體是C語言中聚合數據類型(aggregatedatatype)的一類。結構體可以被聲明為變量、指針或數組等,用以實現較復雜的數據結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員(member),且這些成員可以為不同的類型,成員一般用名字訪問。
擴展資料
1、struct是聲明結構體類型時必須使用的關鍵字,不能省略。“結構體”這個詞是根據英文單詞structure譯出的。
2、structSTUDENT是定義的數據類型的名字,它向編譯系統聲明這是一個“結構體類型”,包括name、num、sex、age、score、addr等不同類型的項。
3、structSTUDENT與系統提供的int、char、float、double等標準類型名一樣,都是數據類型,具有同樣的作用,都是用來定義變量的。
參考資料來源:百度百科—結構體
指向結構體成員運算符 : (-) 從外部看是包含了一個解指針(*)所以要對指針進行操作
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist
*L;
L-lenth;
//同樣是得到L中length的值
結構體成員運算符 : ( . )直接調用結構體中的某個成員
例如:
typedef struct
{
int data[20];
int length;
}Sqlist;
Sqlist?L;
L.length;?//直接調用L中length的值
L.data[3];
擴展資料:
結構體成員的點運算符(.)和箭頭運算符(-)的區別:
相同點:兩個都是二元操作符,其右操作符是成員的名稱。
不同點:點操作符左邊的操作數是一個“結果為結構”的表達式;箭頭操作符左邊的操作數是一個指向結構的指針。
如果一個函數的傳入參數是結構體,且需要該結構體作為返回值的時候,必須采用指針傳遞的方式,其中對結構體賦值必須使用箭頭運算符。
參考資料:
百度百科--
菜鳥教程-C++?運算符
改動如下:
#include stdio.h
#includestring.h
enum gender
{
male,famale
};
typedef struct course
{
char coursename[10];
int coursescore;
}STC;
typedef struct student
{
long studentnumber;
char name[20];
int age;
enum gender sex;
STC coursescore[3];
struct student *next;
void (*ptooutput)(struct student*); // 改動1:改成指針,與output函數匹配
}STD;
void output(struct student *p)
{
int i;
printf("學生%s:\n",p-name);
printf("他的學號是%ld\n",p-studentnumber); // 改動2:學號
printf("他的年齡是%d\n",p-age); // 改動3:年齡
if(p-sex==0)
{printf("他的性別是男\n");}
else
{printf("他的性別是女\n");}
for(i=0;i3;i++)
{
printf("他的%s",p-coursescore[i].coursename);
printf("成績是%d\n",p-coursescore[i].coursescore);
}
}
main()
{
STD a;
a.studentnumber=1011110201;
strcpy(a.name,"葉超");
a.age=19;
a.sex=male;
strcpy(a.coursescore[0].coursename,"數學");
a.coursescore[0].coursescore=87;
strcpy(a.coursescore[1].coursename,"英語");
a.coursescore[1].coursescore=72;
strcpy(a.coursescore[2].coursename,"C語言");
a.coursescore[2].coursescore=66;
a.ptooutput = output; // 改動4:設置打印函數指針
a.ptooutput(a); // 改動5:輸入參數為指針
}
指針就是指向內存的某個地址的一個變量。
結構體指針就是這個指針變量的值必須指向存放該結構體的內存位置。
當這個指針沒有任何指向時,可以賦值為null值,但是改指針不可使用,程序中應該做判斷。下面是一些賦值演示。
struct student{
int id;
int score;
} aaa;
struct student *p = null;//結構體指針p初始化賦值為null
struct student *p2=aaa;//p2指向aaa
struct student *p3=(struct student *)malloc(sizeof(struct student));//內存中申請一個結構體空間,并將地址強制轉換為結構體指針變量賦值給p3
新聞名稱:c語言指向結構體函數 c語言中結構體指針
分享路徑:http://www.yijiale78.com/article6/dopsoig.html
成都網站建設公司_創新互聯,為您提供服務器托管、企業網站制作、、建站公司、虛擬主機、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯