日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言学习—结构体的定义与使用

發布時間:2024/3/26 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言学习—结构体的定义与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 一、結構體的概念
    • 1.結構體是什么?
    • 2.如何定義一個結構體?
    • 3.結構體變量
    • 4.結構體變量的初始化
        • 4.1結構體成員的訪問
        • 4.2結構體變量的初始化
  • 二、結構體的使用
    • 1.如何去使用結構體?
        • 1.1結構體的普通變量如如何訪問結構體成員
        • 1.2結構體的指針變量如何訪問其成員
    • 2.結構體數組
  • 總結


前言

在C語言中,結構體類型屬于一種構造類型(其他的構造類型還有:數組類型,聯合類型)。本文主要介紹關于結構體以下幾部分。


一、結構體的概念

1.結構體是什么?

在實際的應用中,往往變量的類型復雜多變,我們僅僅使用C語言內置的類型無法準確的去定義變量,所以引出了結構體這個概念。也就是說,為了描述復雜類型的個體,只用C語言基礎的內置類型不能完整的表述,而結構體就可以很好的解決這個問題。
結構體本質上還是一種數據類型,但它可以包括若干個“成員”,每個成員的類型可以相同也可以不同,也可以是基本數據類型或者又是一個構造類型。

2.如何定義一個結構體?

如何定義一個結構體,一般定義的形式如下所示:

//結構體的定義 struct + 結構體名稱 {成員列表; };

【注】在定義結構體的時候,大括號最后一定不要忘記分號:’;'
我們舉個簡單的例子:我們定義一個名為Student的結構體,該結構體的成員包括:姓名,學號,性別,年齡,總成績等。

//struct是一個 struct Student //定義一個名為Student的結構體 {char name[20]; //姓名int id; //學號char sex; //性別(1:男 0:女)int age; //年齡int score; //總成績 };

結構體是一種集合,它里面包含了多個變量或數組,它們的類型可以相同,也可以不同,每個這樣的變量或數組都稱為結構體的成員。在上面的例子中,Student為結構體名,它包含了5個成員,分別是:name,id,sex,age,score。特別注意,結構體成員的定義方式與變量和數組的定義方式相同,只是不能初始化

3.結構體變量

既然結構體是一種數據類型,那它就像C語言基礎的內置類型一樣,可以去定義變量,下面就舉個簡單的例子:
(1)結構體變量的定義可以放在結構體的聲明之后:

struct Student //定義一個名為Student的結構體 {char name[20]; //姓名int id; //學號char sex; //性別(1:男 0:女)int age; //年齡int score; //總成績 }; struct Student stu; //定義一個結構體變量

(2)結構體變量的定義也可以在結構體聲明的同時定義,這樣就簡化了代碼:

struct Student //定義一個名為Student的結構體 {char name[20]; //姓名int id; //學號char sex; //性別(1:男 0:女)int age; //年齡int score; //總成績 }stu; //在結構體聲明的同時定義一個結構體變量stu

在實際的定義中,往往使用第二種方法

struct Student stu1; //C語言中,利用結構體去定義變量的時候,必須加上struct,不能省略
Student stu2; //C++中,利用結構體去定義變量的時候,可以省略struct,可直接使用結構體名去定義

(3)還可以使用匿名結構體來定義結構體變量

struct //沒有結構體名 {char name[20]; //姓名int id; //學號char sex; //性別(1:男 0:女)int age; //年齡int score; //總成績 }stu; //使用匿名結構體來定義一個結構體變量stu

但要注意的是這樣的方式雖然簡單,但不能再次定義新的結構體變量了,也就是說,這種定義方式只能定義一次,不能重新再去定義別的變量。在使用的時候,要尤其注意。

4.結構體變量的初始化

4.1結構體成員的訪問

雖然結構類似一個數組,只是數組元素的數據類型是相同的,而結構中元素的數據類型是可以不同的。但結構不能像數組那樣使用下標去訪問其中的各個元素,而應該用結構成員運算符點(.)。即訪問成員的一般形式是:
結構體變量名.成員名
舉個簡單的例子:

struct Student stu; //定義一個結構體變量stu
stu.name; //通過stu.去訪問結構體中的成員name,表示學生stu的姓名name
stu.age; //通過stu.去訪問結構體中的成員age,表示學生stu的年齡age

我們可以通過運算符(.)去訪問結構體成員,例如:

當我們使用結構體變量去訪問成員的時候,輸入運算符.其后面就會出現結構體成員列表,我們選擇要訪問的成員即可。這也說明我們定義的結構體變量是正確的。

4.2結構體變量的初始化

接上面結構體Student的例子,這里我們對其結構體變量stu1初始化:

struct Student stu1 = { “張飛”, 001, 1, 20, 400 }; //姓名:張飛,學號:001,性別:男(1表示男,0表示女),年齡:20,總成績:400

struct Student stu1; //若不給結構體初始值,則里面的值均為【隨機值】 struct Student stu2 = { "Feizhang" }; //若給結構體只賦值一部分,則后面的全部賦為0 struct Student* stup = &stu1; //定義一個結構體類型的指針stup,指向stu1 struct Student* stuq; //理論上stuq為隨機值,但在這里指向0Xcccccccc(Debug模式下會優化為cccccccc) struct Student Stu_arr[10]; //定義一個結構體數組,若不給初始值,則為隨機值

二、結構體的使用

1.如何去使用結構體?

1.1結構體的普通變量如如何訪問結構體成員

結構體普通變量如何訪問其成員:C語言規定,結構體的普通成員可以通過運算符“點.”去訪問其成員,例如:

struct Student stu1 = { "Bulv", 20, 1001, 1, 90 }; //定義結構體變量stu1并初始化 struct Student stu2 = { "Feizhang", 22, 1002, 1, 95 }; //定義結構體變量stu2并初始化 stu1.id = 1003; //通過結構體變量stu1去訪問成員id,并將其值修改為1003 printf("%s\n", stu1.name); //打印學生stu1的姓名 printf("%d\n", stu1.age); //打印學生stu1的年齡 strcpy_s(stu1.name, 10, "caopi"); //修改stu1的第一個變量name的值(char類型不能直接賦值)

1.2結構體的指針變量如何訪問其成員

結構體的指針變量如何訪問其成員:可以通過箭頭符號的方式去訪問其成員:

(*p).name == p -> name //左右兩種訪問方式等價

舉個簡單的例子:

struct Student stu = { "劉備", 20, 1001, 1, 90 }; //定義結構體變量stu1并初始化 struct Student *p = &stu; //定義一個結構體指針p去指向結構體變量stu (*p).age = 23; //等價于p -> age = 23; //將年齡修改為23 strcpy_s((*p).name, "張飛");//注意點和星號的優先級

【注】結構體成員如果是字符串,不能直接通過賦值號“=”去修改值,可以通過C語言中的拷貝函數strcpy去修改值。

2.結構體數組

在上面的例子中,我們都只是定義一個結構體變量,但在實際中,結構體變量不止一個,所以就需要一個數組來去存儲。對比一般數組的定義,結構體數組也可以用相同的方式去定義、使用。下面舉個例子:

struct Student //定義一個名為Student結構體 {char name[20]; //姓名int age; //年齡int id; //學號 }stu[5]; //定義一個結構體數組stu[5],其長度是5,相當于要記錄5個學生的信息

如何去使用結構體數組呢?如何訪問結構體數組呢?我們看個簡單的例子:


總結

總結:以上是對結構體的定義以及如何使用做了簡單的介紹,C語言中,我們實際要求的變量類型不能僅僅只通過C語言基礎內置類型來定義,所以就引出了結構體,利用結構體來定義我們的變量,可以滿足我們的要求,但是要注意的幾點就是:
1.結構體如何定義,在定義的時候可以同時定義一個結構體變量,末尾必須以分好結尾;
2.結構體變量如何去訪問其成員,可以通過運算符"."去訪問;結構體指針變量如何去訪問成員,可以通過箭頭的形式去訪問,例如:(*p).name == p -> name //左右兩種訪問方式等價。

總結

以上是生活随笔為你收集整理的C语言学习—结构体的定义与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。