亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析

 更新時(shí)間:2022年02月16日 16:15:59   作者:菠蘿印象威  
大家好,本篇文章主要講的是C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下

一.結(jié)構(gòu)體定義

C語(yǔ)言結(jié)構(gòu)體由一系列相同或者不同類(lèi)型的數(shù)據(jù)構(gòu)成的集合,結(jié)構(gòu)體類(lèi)型就是以struct關(guān)鍵字定義的數(shù)據(jù)類(lèi)型。

結(jié)構(gòu)體的格式如下:

struct 結(jié)構(gòu)名稱(chēng) { 
    結(jié)構(gòu)體所包含的數(shù)據(jù)成員,包括變量數(shù)組等
} 結(jié)構(gòu)變量 ;//結(jié)構(gòu)變量可以指定一個(gè)或多個(gè)

舉例:

struct Student
{
	char name[10];
	char sex[2];
	int age;
}Stu

二.實(shí)例演示

先看下結(jié)構(gòu)體變量如何初始化

在這里插入圖片描述

#include <stdio.h>
#include <string.h>
struct Student
{
        char name[10];
        char sex[5];
        int age;
}Stu = {"Mike","man",22};

int main(int argc, char *argv[])
{
        printf("name:%s\nsex:%s\nage:%d\n",Stu.name,Stu.sex,Stu.age);
}

初始化結(jié)構(gòu)體變量很簡(jiǎn)單,直接在結(jié)構(gòu)體變量后面賦值。
結(jié)果:

在這里插入圖片描述

結(jié)構(gòu)體作為函數(shù)參數(shù)

#include <stdio.h>
#include <string.h>
//定義Student結(jié)構(gòu)體
struct Student
{
        char name[10];
        char sex[5];
        int age;
}Stu;

void print(struct Student stu)
{
        printf("Student name:%s\n",stu.name);
        printf("Student sex:%s\n",stu.sex);
        printf("Student age:%d\n",stu.age);
}

int main(int argc, char *argv[])
{
        struct Student stu1;
        strcpy(stu1.name,"will");
        strcpy(stu1.sex,"man");
        stu1.age = 20;
        print(stu1);
        //Stu
        Stu.age=11;
        print(Stu);
}                 

在這里插入圖片描述

從這個(gè)示例可以看出:將結(jié)構(gòu)體作為參數(shù)傳入函數(shù),定義結(jié)構(gòu)體時(shí),我們可以在;前面定義結(jié)構(gòu)體變量, 這樣就不需要再定義結(jié)構(gòu)變量,如:struct Student stu1;假設(shè)stu1在定義結(jié)構(gòu)體時(shí)就定義變量,那么就可以直接賦值。

結(jié)果:

在這里插入圖片描述

可以看出第二個(gè)學(xué)生打印,因?yàn)樵诙x結(jié)構(gòu)體時(shí)就已經(jīng)定義結(jié)構(gòu)變量,所以可以直接賦值。

結(jié)構(gòu)體指針

實(shí)例演示,傳入結(jié)構(gòu)體指針

在這里插入圖片描述

#include <stdio.h>
#include <string.h>
struct Student
{
        char name[10];
        char sex[5];
        int age;
}Stu;

void print(struct Student *stu)
{
        printf("Student name:%s\n",stu->name);
        printf("Student sex:%s\n",stu->sex);
        printf("Student age:%d\n",stu->age);
}

int main(int argc, char *argv[])
{
        struct Student stu1;
        strcpy(stu1.name,"will");
        strcpy(stu1.sex,"man");
        stu1.age = 20;
        print(&stu1);
        Stu.age=11;
        print(&Stu);
}

這里的實(shí)例和上面例子的區(qū)別主要是:
1.將定義的變量改為指針struct Student *stu。
2.指針賦值時(shí)使用->。
3.使用打印函數(shù)時(shí),改為取地址。

結(jié)果一致

三.typedef struct 和 struct的區(qū)別

1、聲明不同

1)、struct:struct可以直接使用結(jié)構(gòu)體名字聲明結(jié)構(gòu)體。
2)、typedef struct:typedef struct為修飾結(jié)構(gòu)體,結(jié)構(gòu)體有了別名,通過(guò)結(jié)構(gòu)體別名聲明結(jié)構(gòu)體。

2、訪問(wèn)成員變量不同

1)、struct:struct定義的結(jié)構(gòu)體變量,可直接訪問(wèn)結(jié)構(gòu)體成員。

2)、typedef struct:typedef struct定義的結(jié)構(gòu)體變量,不可直接訪問(wèn)結(jié)構(gòu)體成員,必須顯式的通過(guò)結(jié)構(gòu)體變量來(lái)訪問(wèn)成員。

3、重新定義不同

1)、struct:想重新定義struct結(jié)構(gòu)體的話,必須重寫(xiě)整個(gè)結(jié)構(gòu)體。

2)、typedef struct:想重新定義typedef struct結(jié)構(gòu)體的話,可以通過(guò)別名來(lái)繼承結(jié)構(gòu)體進(jìn)行重新定義。
舉例:

在這里插入圖片描述

可以看到:
使用typedef struct定義的結(jié)構(gòu)體,我們通常是使用別名進(jìn)行操作,而且在使用時(shí)也簡(jiǎn)化了使用方法,例如:Stu s1,相當(dāng)于聲明對(duì)象一樣,如果使用struct,那么就要寫(xiě)成struct Student stu1;。

如果直接使用結(jié)構(gòu)體名稱(chēng)那么會(huì)報(bào)錯(cuò):

錯(cuò)誤示例:

在這里插入圖片描述

報(bào)錯(cuò)結(jié)果:

在這里插入圖片描述

改回別名操作,結(jié)果:

在這里插入圖片描述

總結(jié)

到此這篇關(guān)于C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析的文章就介紹到這了,更多相關(guān)C語(yǔ)言結(jié)構(gòu)體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C/C++ Qt 數(shù)據(jù)庫(kù)與Chart歷史數(shù)據(jù)展示

    C/C++ Qt 數(shù)據(jù)庫(kù)與Chart歷史數(shù)據(jù)展示

    這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫(kù)中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學(xué)習(xí)和工作價(jià)值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • C++實(shí)現(xiàn)defer聲明方法詳解

    C++實(shí)現(xiàn)defer聲明方法詳解

    這篇文章主要介紹了C++實(shí)現(xiàn)defer聲明,在和朋友交談時(shí)候,無(wú)意間了解到Go語(yǔ)言的defer,發(fā)現(xiàn)挺有意思的。和智能指針類(lèi)似,當(dāng)出了作用域后,被defer修飾的操作才會(huì)執(zhí)行
    2022-11-11
  • C/C++中宏/Macro的深入講解

    C/C++中宏/Macro的深入講解

    這篇文章主要給大家介紹了關(guān)于C/C++中宏/Macro的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C/C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 利用C++編寫(xiě)一個(gè)Json解析器

    利用C++編寫(xiě)一個(gè)Json解析器

    這篇文章主要為大家詳細(xì)介紹了如何利用C++編寫(xiě)一個(gè)簡(jiǎn)單又好用的Json解析器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Clion下vcpkg的使用詳解

    Clion下vcpkg的使用詳解

    這篇文章主要介紹了Clion下vcpkg的使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • C++實(shí)現(xiàn)LeetCode(75.顏色排序)

    C++實(shí)現(xiàn)LeetCode(75.顏色排序)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(75.顏色排序),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    C語(yǔ)言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言動(dòng)態(tài)鏈表實(shí)現(xiàn)學(xué)生學(xué)籍管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    用代碼和UML圖化解設(shè)計(jì)模式之橋接模式的深入分析

    本篇文章是對(duì)橋接模式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C語(yǔ)言實(shí)現(xiàn)電話簿管理系統(tǒng)課程設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)電話簿管理系統(tǒng)課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)電話簿管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語(yǔ)言和C++的6點(diǎn)區(qū)別

    C語(yǔ)言和C++的6點(diǎn)區(qū)別

    在本篇文章里我們給大家整理了關(guān)于C語(yǔ)言和C++的6點(diǎn)區(qū)別,需要的朋友們可以學(xué)習(xí)參考下。
    2019-02-02

最新評(píng)論