天天看點

C語言:結構體往期文章前言1. 結構體的聲明2. 結構體變量的定義和初始化3. 結構體成員的通路3. 結構體傳參後記

往期文章

  1. C語言:初識C語言
  2. C語言:分支語句和循環語句
  3. C語言:函數
  4. C語言:數組
  5. C語言:操作符詳解
  6. C語言:指針詳解

目錄

  • 往期文章
  • 前言
  • 1. 結構體的聲明
  • 2. 結構體變量的定義和初始化
  • 3. 結構體成員的通路
  • 3. 結構體傳參
  • 後記

前言

一晃兒本系列文章已經到了第七篇了,部落客将繼續為大家分享文章,歡迎大家的支援。由于開學等瑣事鴿了好長時間才繼續這篇文章,希望能夠在本學期找到合适的學習狀态和節奏。部落客最近開通了社群——計科菜鳥club,旨在為廣大計算機初學者提供幫助,歡迎各位點選連結加入我的社群計科菜鳥club社群

本篇文章為大家分享結構體相關知識,期待您的支援。

1. 結構體的聲明

我們為什麼需要結構體?

我們描述資料,可以用各種資料類型,但是當我們描述更為複雜的東西,比如描述一個學生,這個學生會有他的名字,他的年齡,他的學号,他的聯系方式等各種資訊,這時我們無法用一個之前接觸過的具體的資料類型來描述一個學生,于是我們引入結構體,來描述更為複雜的資訊。

C語言:結構體往期文章前言1. 結構體的聲明2. 結構體變量的定義和初始化3. 結構體成員的通路3. 結構體傳參後記

例如描述一個學生

typedef struct Stu
{
char name[20];//名字
int age;//年齡
char sex[5];//性别
char id[20];//學号
}Stu;//分号不能丢
           

記住,分号不能丢哦。

結構的成員可以是标量、數組、指針,甚至是其他結構體。

2. 結構體變量的定義和初始化

struct Point
{
	int x;
	int y;
}p1; //聲明類型的同時定義變量p1
struct Point p2; //定義結構體變量p2
//初始化:定義變量的同時賦初值。
struct Point p3 = { x, y };
struct Stu //類型聲明
{

char name[15];//名字
int age; //年齡
};
struct Stu s = { "zhangsan", 20 };//初始化
struct Node
{
	int data;
	struct Point p;
	struct Node* next;
}n1 = { 10, { 4, 5 }, NULL }; //結構體嵌套初始化
struct Node n2 = { 20, { 5, 6 }, NULL };//結構體嵌套初始化
           

3. 結構體成員的通路

1.結構體變量通路成員 結構變量的成員是通過點操作符(.)通路的。點操作符接受兩個操作數

2.結構體指針通路指向變量的成員 有時候我們得到的不是一個結構體變量,而是指向一個結構體的

指針。

struct Stu
{
	char name[20];
	int age;
};
void print(struct Stu* ps)
{
	printf("name = %s age = %d\n", (*ps).name, (*ps).age);
	//使用結構體指針通路指向對象的成員
	printf("name = %s age = %d\n", ps->name, ps->age);
}
int main()
{
	struct Stu s = { "zhangsan", 20 };
	print(&s);//結構體位址傳參
	return 0;
}
           

3. 結構體傳參

函數傳參的時候,參數是需要壓棧的。 如果傳遞一個結構體對象的時候,結構體過大,參數壓棧

的的系統開銷比較大,是以會導緻性能的下降。

結構體傳參的時候,要傳結構體的位址。

#include<stdio.h>

struct S
{
	int data[1000];
	int num;
};
struct S s = { { 1, 2, 3, 4 }, 1000 };

//結構體位址傳參
void print2(struct S* ps)
{
	printf("%d\n", ps->num);
}
int main()
{
	print2(&s); //傳位址
	return 0;
}

           

後記

本篇部落格就介紹到這裡啦,希望對大家有所幫助。部落客會盡力更新自己的部落格,日拱一卒,期待進步。

C語言:結構體往期文章前言1. 結構體的聲明2. 結構體變量的定義和初始化3. 結構體成員的通路3. 結構體傳參後記

繼續閱讀