国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

鶴山區(qū)網(wǎng)站建設(shè)關(guān)鍵詞排名點擊軟件

鶴山區(qū)網(wǎng)站建設(shè),關(guān)鍵詞排名點擊軟件,營銷網(wǎng)絡(luò)建設(shè)怎么寫,一搜網(wǎng)站制作🌞 “少年有夢不至于心動,更要付諸行動?!?今天我們一起學(xué)習(xí)一下結(jié)構(gòu)體的相關(guān)內(nèi)容! 結(jié)構(gòu)體 🎈1.結(jié)構(gòu)體的聲明1.1結(jié)構(gòu)的基礎(chǔ)知識1.2結(jié)構(gòu)的聲明1.3結(jié)構(gòu)成員的類型1.4結(jié)構(gòu)體變量的定義和初始化 🎈2.結(jié)構(gòu)體成員的訪問2.1結(jié)…

在這里插入圖片描述

🌞 “少年有夢不至于心動,更要付諸行動。” 今天我們一起學(xué)習(xí)一下結(jié)構(gòu)體的相關(guān)內(nèi)容!

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

  • 🎈1.結(jié)構(gòu)體的聲明
    • 1.1結(jié)構(gòu)的基礎(chǔ)知識
    • 1.2結(jié)構(gòu)的聲明
    • 1.3結(jié)構(gòu)成員的類型
    • 1.4結(jié)構(gòu)體變量的定義和初始化
  • 🎈2.結(jié)構(gòu)體成員的訪問
    • 2.1結(jié)構(gòu)體變量訪問成員
    • 2.2結(jié)構(gòu)體指針訪問指向變量的成員
  • 🎈3.結(jié)構(gòu)體傳參

🎈1.結(jié)構(gòu)體的聲明

1.1結(jié)構(gòu)的基礎(chǔ)知識

📖結(jié)構(gòu)是一些值的集合,這些值稱為成員變量,結(jié)構(gòu)的每個成員可以是不同類型的變量。

1.2結(jié)構(gòu)的聲明

📝為什么會出現(xiàn)結(jié)構(gòu)體呢?在我們當(dāng)前的一些學(xué)習(xí)中,我們學(xué)過的類型都是內(nèi)置類型,例如:char short int double 等等。但是,它們無法描述一個復(fù)雜的對象,比方說人,我們很難用一個類型描述出它。相反,我們可能需要通過性別、年齡、身高、體重等等來進(jìn)行描述。
🧩對于結(jié)構(gòu)體的聲明,格式如下:

struct tag
{member-list;//成員變量的列表
}variable-list;//變量列表

📖下面,給出一個學(xué)生的結(jié)構(gòu)體的聲明:

struct Stu//struct是結(jié)構(gòu)體的關(guān)鍵字
{//學(xué)生的相關(guān)屬性char name[20];//姓名int age;//年齡char sex[5];//性別char tele[12];//電話
}s3,s4;
//s3,s4是結(jié)構(gòu)體類型的變量,但是s3,s4是全局變量。
int main()
{struct Stu s1;struct Stu s2;//s1,s2也是結(jié)構(gòu)體類型的變量,但是是局部變量return 0;
}

在這里插入圖片描述
🔎這里的話,可能有的同學(xué)在想,如果每次在主函數(shù)內(nèi)來定義一個結(jié)構(gòu)體變量都要加struct Stu是不是太麻煩了,能不能把這個去掉呢,或者說有沒有更簡單的表達(dá)方法呢?我們這個時候,就需要用到typedef(typedef顧名思義是類型定義的,這里理解為類型重命名。鏈接: 關(guān)于關(guān)鍵字講解的鏈接)那么,程序可以做以下修改:

typedef struct Stu//struct是結(jié)構(gòu)體的關(guān)鍵字
{//學(xué)生的相關(guān)屬性char name[20];//姓名int age;//年齡char sex[5];//性別char tele[12];//電話
}Stu;//Stu是重命名產(chǎn)生的新的類型
int main()
{Stu s1;Stu s2;//s1,s2是結(jié)構(gòu)體類型的變量return 0;
}

1.3結(jié)構(gòu)成員的類型

📖結(jié)構(gòu)體成員的類型可以是標(biāo)量、數(shù)組、指針,甚至是其他結(jié)構(gòu)體。

struct B
{int a;short b;
};
struct C
{char c;int num;int arr[10];double* p;struct B b;struct B* p;
};

1.4結(jié)構(gòu)體變量的定義和初始化

🧩結(jié)構(gòu)體變量的定義:

struct A
{int age;char sex;
}a1;//a1是全局變量
struct A a2;//a2也是全局變量
int main()
{struct A a3;//局部變量return 0;
}

📖當(dāng)我們想要給這些變量一些值的時候,我們就需要對變量進(jìn)行初始化:

struct A
{int age;char sex;int arr[10];
}a1;//a1是全局變量
struct A a2;//a2也是全局變量
int main()
{//對于結(jié)構(gòu)體的初始化可以用一對大括號來進(jìn)行//按照順序初始化struct A a3 = { 18,'M',{1,2,3,4,5,6,7,8,9,10} };//局部變量//給指定的成員初始化struct A a4 = { .age = 20,.arr = {6,6,6} };return 0;
}

🔎我們可以通過監(jiān)視來看看變量初始化的情況:
在這里插入圖片描述

🎈2.結(jié)構(gòu)體成員的訪問

2.1結(jié)構(gòu)體變量訪問成員

📖結(jié)構(gòu)變量的成員通過點操作符(.)訪問的,點操作符要接受兩個操作數(shù)。

下面我們給出示例,帶大家了解一下:

#include <stdio.h>
#include <string.h>
struct A
{char name[20];int age;char sex;
};
void Set_a(struct A t)
{t.age = 10;//t.name = "zhangsan";//這里我們發(fā)現(xiàn)會報錯,因為name是數(shù)組名,數(shù)組是常量的地址,不能改變,這里我們就需要用到strcpy函數(shù)來進(jìn)行拷貝strcpy(t.name, "zhangsan");//字符串拷貝t.sex = 'M';
}
int main()
{struct A a = { 0 };//寫一個函數(shù)給a中存放數(shù)據(jù)Set_a(a);return 0;
}

🔎我們上面這段代碼對不對呢?變量a是否被初始化了呢?這里,我們調(diào)試著看一看:
在這里插入圖片描述
🧩我們發(fā)現(xiàn)a并沒有被初始化,這是為什么呢?

?注意:實參傳遞給形參的時候,形參是實參的一份臨時拷貝,對形參的修改不會影響實參?

🎈通過前面的學(xué)習(xí),我們知道這里應(yīng)該通過傳地址的方式來改變實參的值:

#include <stdio.h>
#include <string.h>///strcpy函數(shù)的頭文件
struct A
{char name[20];int age;char sex;
};
void Set_a(struct A *t)
{(*t).age = 10;//t.name = "zhangsan";//這里我們發(fā)現(xiàn)會報錯,因為name是數(shù)組名,數(shù)組是常量的地址,不能改變,這里我們就需要用到strcpy函數(shù)來進(jìn)行拷貝strcpy((*t).name, "zhangsan");//字符串拷貝(*t).sex = 'M';
}
int main()
{struct A a = { 0 };//寫一個函數(shù)給a中存放數(shù)據(jù)Set_a(&a);return 0;
}

在這里插入圖片描述
🌞同樣的,既然這里我們用到了指針,不妨可以用指針訪問指向變量的成員!

2.2結(jié)構(gòu)體指針訪問指向變量的成員

📖通過結(jié)構(gòu)體指針來訪問成員可以通過操作符->來實現(xiàn)。

🧩上述代碼可以做以下修改,結(jié)果相同:

#include <stdio.h>
#include <string.h>
struct A
{char name[20];int age;char sex;
};
void Set_a(struct A* t)
{t->age = 10;strcpy(t->name, "zhangsan");//字符串拷貝t->sex = 'M';
}
int main()
{struct A a = { 0 };//寫一個函數(shù)給a中存放數(shù)據(jù)Set_a(&a);return 0;
}

在這里插入圖片描述

🎈3.結(jié)構(gòu)體傳參

#include <stdio.h>
struct B
{int date[100];int num;
};
struct B b = { {1,2,3},12 };
void Print1(struct B b)
{printf("%d\n", b.num);
}
void Print2(struct B *b)
{printf("%d\n", b->num);
}
int main()
{Print1(b);Print2(&b);return 0;
}

在這里插入圖片描述

🔎對于上面兩個函數(shù)Print1和Print2,用哪個更好呢?這里我們選擇函數(shù)Print2
?注:函數(shù)傳參的時候,參數(shù)是需要壓棧的?如果傳遞一個結(jié)構(gòu)體對象的時候,結(jié)構(gòu)體過大,參數(shù)壓棧的系統(tǒng)開銷比較大,所以會導(dǎo)致性能的下降!
??結(jié)論:結(jié)構(gòu)體傳參的時候,要傳結(jié)構(gòu)體的地址!

好啦,關(guān)于結(jié)構(gòu)體的知識點到這里就結(jié)束啦,后期會繼續(xù)更新C語言的相關(guān)知識,歡迎大家持續(xù)關(guān)注、點贊和評論!??????

http://m.aloenet.com.cn/news/38913.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)服務(wù)費會計分錄品牌推廣方案案例
  • 佛山企業(yè)網(wǎng)站搭建公司百度認(rèn)證
  • 贛州網(wǎng)站優(yōu)化公司網(wǎng)站分析
  • 網(wǎng)站建設(shè)網(wǎng)頁設(shè)計用什么軟件當(dāng)下最流行的營銷方式
  • 秦皇島網(wǎng)站建設(shè)價格我要推廣網(wǎng)
  • 麗水網(wǎng)站建設(shè)哪家好網(wǎng)址導(dǎo)航哪個好
  • 做系統(tǒng)網(wǎng)站化學(xué)sem是什么意思
  • 最牛的手機視頻網(wǎng)站建設(shè)免費的網(wǎng)站軟件
  • 自己做的網(wǎng)站字體變成方框18歲以上站長統(tǒng)計
  • 網(wǎng)站建設(shè)總體規(guī)劃百度云官網(wǎng)
  • 不登陸不收費的網(wǎng)站鏈接seo優(yōu)化一般優(yōu)化哪些方面
  • 可以做外鏈的音樂網(wǎng)站百度廣告聯(lián)盟app下載官網(wǎng)
  • 如何給公司取一個好名字優(yōu)化網(wǎng)站關(guān)鍵詞優(yōu)化
  • ps中網(wǎng)站頁面做多大的豬八戒網(wǎng)接單平臺
  • 彩票計劃網(wǎng)站開發(fā)哪里有競價推廣托管
  • 淘寶客優(yōu)惠卷網(wǎng)站怎么做的百度官方網(wǎng)首頁
  • 個性網(wǎng)站功能百度推廣服務(wù)費3000元
  • 錦溪網(wǎng)站建設(shè)百度云搜索引擎官方入口
  • seo建設(shè)網(wǎng)站百度seo招聘
  • 中山做網(wǎng)絡(luò)推廣的公司廣告優(yōu)化師工資一般多少
  • 做推廣優(yōu)化的網(wǎng)站有哪些寧波最好的推廣平臺
  • wordpress站點臨時關(guān)閉seo自然優(yōu)化排名技巧
  • 做商城網(wǎng)站哪里買寧波seo推廣推薦公司
  • icp網(wǎng)站負(fù)責(zé)人網(wǎng)絡(luò)推廣平臺都有哪些
  • 甘南州住房和城鄉(xiāng)建設(shè)局網(wǎng)站百度一下就知道百度首頁
  • 寧波企業(yè)網(wǎng)站搭建特點百度一下百度一下你知道
  • 網(wǎng)站制作多久能完成廣州優(yōu)化疫情防控措施
  • 深圳做網(wǎng)站的網(wǎng)絡(luò)公2022年傳銷最新消息
  • 做曖曖視頻網(wǎng)站下載東營網(wǎng)站建設(shè)制作
  • 什么網(wǎng)站做微信公眾賬號seo專員工作容易學(xué)嗎