最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

struct 結(jié)構(gòu)名稱 { 
    結(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é)構(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)體有了別名,通過結(jié)構(gòu)體別名聲明結(jié)構(gòu)體。

2、訪問成員變量不同

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

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

3、重新定義不同

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

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

在這里插入圖片描述

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

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

錯(cuò)誤示例:

在這里插入圖片描述

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

在這里插入圖片描述

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

在這里插入圖片描述

總結(jié)

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

相關(guān)文章

最新評論

漳浦县| 岳阳市| 英德市| 通州区| 水城县| 昌图县| 涪陵区| 巢湖市| 安陆市| 邹城市| 靖远县| 永清县| 乾安县| 吴江市| 宣汉县| 延边| 新巴尔虎右旗| 洞头县| 通州市| 台中市| 武定县| 恩平市| 金乡县| 南宫市| 英超| 金沙县| 延津县| 杭州市| 玛纳斯县| 蒙自县| 盈江县| 海阳市| 壶关县| 聂荣县| 南部县| 张家港市| 定兴县| 万载县| 黔东| 济源市| 策勒县|