16-結構體

AK47YHAO發表於2024-12-06

16-結構體

結構體可以讓C語言建立新的型別

/* 建立一個學生型別 */
struct Stu
{
	char name[20];		//名字
	int age;			//年齡
	double score;		//成績
};

/* 建立一個書的型別 */
struct Book
{
	char name[20];		//名字
	float price;		//價格
	char id[30];		//書號
};

一、結構體變數的建立

struct Stu s;		//結構體變數的建立(未初始化)

二、. 運算子

用來表示結構體成員變數

結構體成員表達形式結構體變數 . 結構體成員變數

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

/* 建立一個學生型別 */
struct Stu
{
	char name[20];		//名字
	int age;			//年齡
	double score;		//成績
};

int main()
{
	struct Stu s = { "張三", 20, 85.5 };		//結構體變數的建立和初始化

	/*
	 * 結構體成員表達形式:結構體變數.結構體成員變數
	 */
	printf("名字:%s\t 年齡:%d\t 成績:%lf\n", s.name, s.age, s.score);		//%lf 列印雙精度浮點型的格式

	return 0;
}

image-20241206173203916

三、-> 運算子

指標指向物件中的變數

結構體成員表示形式:結構體指標 -> 成員變數名

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

/* 建立一個學生型別 */
struct Stu
{
	char name[20];		//名字
	int age;			//年齡
	double score;		//成績
};

int main()
{
	struct Stu s = { "張三", 20, 85.5 };		//結構體變數的建立和初始化

	/*
	 * 結構體成員表達形式:結構體變數.結構體成員變數
	 */
	printf("方法1(.):名字:%s\t 年齡:%d\t 成績:%lf\n\n", s.name, s.age, s.score);		//%lf 列印雙精度浮點型的格式

	struct Stu * pa = &s;		//獲取 s 變數的地址

	/*
	 * 結構體成員表達形式:指標變數的取值.結構體成員變數
	 */
	printf("方法2(.):名字:%s\t 年齡:%d\t 成績:%lf\n\n", (*pa).name, (*pa).age, (*pa).score);		//%lf 列印雙精度浮點型的格式

	/*
	 * 結構體成員表達形式:結構體指標 -> 成員變數名
	 */
	printf("方法3(->):名字:%s\t 年齡:%d\t 成績:%lf\n", pa->name, pa->age, pa->score);		//%lf 列印雙精度浮點型的格式

	return 0;
}

image-20241206174546927

相關文章