真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C語言-結(jié)構體-創(chuàng)新互聯(lián)

結(jié)構體概念

由一個或多個基礎類型組合出來的一個新的復合類型。

創(chuàng)新互聯(lián)公司專注于月湖網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供月湖營銷型網(wǎng)站建設,月湖網(wǎng)站制作、月湖網(wǎng)頁設計、月湖網(wǎng)站官網(wǎng)定制、小程序制作服務,打造月湖網(wǎng)絡公司原創(chuàng)品牌,更為您提供月湖網(wǎng)站排名全網(wǎng)營銷落地服務。結(jié)構體類型的聲明
struct student_t{
    int sn;
    char name[32];
    int age;
};
結(jié)構體變量的定義
struct student_t stu;

結(jié)構體可以在全局聲明,也可以在某個函數(shù)內(nèi)部進行聲明,但是局部聲明的類型除了作用域就無法被訪問。可以在聲明結(jié)構體的同時定義變量。

typedef的作用

類型定義,基于一個原始的類型 ,定義出一個新的類型。

基于struct student_t類型定義了一個新的類型Student,此時的Student是一個類型。

typedef常用于復雜數(shù)據(jù)類型的類型定義,可以大大簡化結(jié)構體類型名的使用。

結(jié)構體數(shù)組的定義與使用
#include#includetypedef struct student_t{
    int sn;
    char name[32];
    int age;
}Student;

typedef struct student_t Stu;

int main()
{
    struct student_t stu = { 2, "小紅", 18 };
    Student stu1 = { 1, "小明", 18 };
    Stu stu2[]={
        { 1, "小明", 18 },
        { 2, "小紅", 19 },
        { 3, "小藍", 20 }
    };
    for (int i = 0; i< sizeof(stu2) / sizeof(stu2[0]); i++)
    {
        printf("學號:%3d\t姓名:%6s\t年齡:%3d\n", stu2[i].sn, (*(stu2+i)).name, (stu2+i)->age);
    }
    
    struct student_t *pstu = &stu1;
    printf("學號:%d\n", stu.sn);
    printf("姓名:%s\n", stu.name);
    printf("年齡:%d\n", stu.age);

    printf("學號:%d\n", (*pstu).sn);
    printf("姓名:%s\n", pstu->name);
    printf("年齡:%d\n", pstu->age);
    system("pause");
    return 0;
}
結(jié)構體的嵌套定義
#include#includetypedef struct student_t{
    int sn;
    char name[32];
    int age;
}Student;//Student是一個類型
typedef struct class_t{
    int id;
    char name[32];
    int stu_count;
    struct student_t stu_arry[50];//嵌套定義struct student_t類型
}Class;//Class是一個類型
int main()
{
    Class class = { 1, "一年級一班", 2, { { 1, "小明", 18 }, { 2, "小紅", 19 } } };
    printf("%10s   %10s   %10s\n", "班級ID", "班級名稱","班級數(shù)量");
    printf("%10d   %10s   %10d\n", class.id, class.name, class.stu_count);
    for (int i = 0; i< class.stu_count; i++)
    {
        printf("學號:%3d\t姓名:%6s\t年齡:%3d\n", class.stu_arry[i].sn, class.stu_arry[i].name, class.stu_arry[i].age);
    }
    system("pause");
    return 0;
}
結(jié)構體類型的嵌套定義與使用 結(jié)構體類型的成員自引用

結(jié)構體類型成員的類型是否可以是結(jié)構體自身類型?

stu成員定義時,student_t類型還沒有定義完畢,這時候的struct student_t還不是一個完整的類型。

但是,定義結(jié)構體自身類型的指針是可以的。因為,指針類型的成員變量大小固定,跟結(jié)構體類型是否定義完畢無關。

結(jié)構體成員的存儲
struct student_t{
? ? int sn;//4字節(jié)空間
? ? char name[32];//32字節(jié)空間
}stu;

stu變量的存儲:結(jié)構體中每一個成員變量都要占空間,成員變量的名稱就代表了一整塊空間中的某個子塊。

stu.sn=1;
strcpy(stu.name,"hello");//字符串的賦值
結(jié)構體變量的傳參
#include#include#includestruct studen_t{
    int sn;
    char name[32];
};
void func1(struct studen_t stu)
{
    printf("%d---%s\n", stu.sn, stu.name);
}
void func2(struct studen_t *pstu)
{
    pstu->sn = 2;
    strcpy(pstu->name, "小紅");//結(jié)構體中字符串的賦值
}
int main()
{
    struct studen_t stu = { 1, "小明" };
    func1(stu);
    func2(&stu);
//傳遞空間地址進入函數(shù),不僅可以訪問地址所指向的空間,還可以修改所指向空間的值
    func1(stu);
    system("pause");
    return 0;
}

數(shù)組傳參:

#include#include#includestruct studen_t{
    int sn;
    char name[32];
};
void func(struct studen_t *pstu)
{
    pstu->sn = 21;
    strcpy(pstu->name, "小紅");//結(jié)構體中字符串的賦值
}
int main()
{
    struct studen_t arry[3] = {
        { 1, "張三" },
        { 2, "李四" },
        { 3, "王五" }
    };
    func(arry);//arry是數(shù)組名,是數(shù)組首元素的地址,傳遞進入?yún)?shù)后,即修改數(shù)組首元素的值
    for (int i = 0; i< 3; i++)
    {
        printf("學號:%2d  姓名:%s\n", arry[i].sn, arry[i].name);
    }
    system("pause");
    return 0;
}
因為結(jié)構體類型占用空間較大,所以結(jié)構體傳參時一般采用 傳址操作(形參是地址,指針大小固定為4/8字節(jié))。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


當前文章:C語言-結(jié)構體-創(chuàng)新互聯(lián)
鏈接分享:http://weahome.cn/article/dsojpc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部