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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C:结构体

發布時間:2024/4/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C:结构体 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
結構體

構造類型:就是有基本的類型組成的

1.結構體 ?結構體是一種自定義的數據類型 和 int float 是一樣的都可以定義變量?

? 數組 只能存放一種類型的容器 ? ?

? 結構體 ? 可以存放多種數據類型? 相對于數組更加的完整

2.一個結構體可以被作為另一個結構體中的普通變量 ??

3.結構體的聲明(數據類型的聲明)

/*? ? struct 結構體名 {

? ? ? ? char name[20];

? ? ? ? int age; //結構體成員? 結構體成員之間是要用分號隔開 ? 在結構體內部定義變量的時候僅僅是聲明,不能賦值

? ? }; //分號是結構體聲明的結束標示符,在聲明的時候不能省略

?*/

聲明一個結構體變量(變量的聲明)

? ? //定義一個結構體變量

? ? struct student stu1 ={"lee", 18,'m',90};

struct student{//學生的結構體char name[20];int age; // char stuTele[11];char gender;//性別float score;};struct point{//點的結構體float x;//橫坐標float y;//縱坐標 };struct rect{//長方形結構體float width;//寬度float height;//長度float x;//x坐標float y;//y坐標 };struct round{//圓圈Point p;//一個結構體可以被作為另一個結構體中的普通變量float r;};struct cube{//定義一個立方體float leight;//float width;//寬度float height;//高度 }; int main(int argc, const char * argv[]) {//main() 上面的都是 全局變量//結構體類型 struct + 結構體名//定義一個結構體變量struct student stu1 = {"lee", 18,'m',90};struct point p1 = {23, 12.25};struct rect r1 = {23,34};struct round round1 = { {12.5,15.6}, 12.5};//這里要注意一下struct cube cube1 = {12.5,3.4,23.5};}

//給結構體的類型重命名? typedef ? ? ? ? ??

? ??typedef struct student Student;

// 結構體重命名的第二種形式typedef struct data{int year;int mounth;int day;}Day;//直接在定義的時候就重命名了 新起的名字與重命名的是等同的 都可以用Day d1 = {2015,07,31};// 我們使用重命名的名字進行定義變量Student stu1 = {"lee", 18,'m',90}; // 結構體成員的訪問 結構體變量.成員變量名//獲取stu 的姓名,性別,年齡,分數//給字符串賦值的時候要用到 strcpy()函數strcpy(stu1.name, "Kitty");//給stud1的姓名改為kittyprintf("%s \n",stu1.name);stu1.age;stu1.name;stu1.gender;stu1.score; //獲取stu1的基本信息; 輸出其信息//結構體的訪問是通過 變量名.成員變量名printf("name = %s age = %d gender = %c score = %.2f",stu1.name,stu1.age,stu1.gender,stu1.score); struct point p ={23.3,45.7};//賦值的第一種方式 單個成員逐個賦值p.x = 12;p.y = 13;//賦值的第二種方式 整體結構體賦值struct point p1 = {120,23};p = p1;printf("%.2f %.2f \n",p.x,p.y);

? ??//對于整體賦值的小技巧 ? 數組作為一個結構體的成員時,就可以直接給數組賦值,對比之前數組是不能直接賦值的

?

//對于整體賦值的小技巧 數組作為一個結構體的成員時,就可以直接給數組賦值,對比之前數組是不能直接賦值的printf("%.2f %.2f \n",p.x,p.y);printf("%.2f %.2f \n",p.x,p.y);//語句要寫在函數的內部//賦值技巧struct one{int a[10];int num;};//數組作為結構體成員變量時,可以通過結構體的整體賦值為數組的每個元素賦值struct one s1 ={{1,2},3};struct one s2 ={{12,13},3};s1 = s2;for (int i = 0; i < 2; i++) {printf("%d \t",s1.a[i]);}

?

? ??minAgePer = p1.age > p2.age ? p1 : p2;//這里是保存的是最大年齡的人的整體信息

? ? minAgePer = minAgePer.age > p3.age ? minAgePer : p3;

?下午筆記

struct teachr{char name[20];//分號隔開char gender;int age; // float height; };//定義一個有5個元素的結構體數組struct teachr Tea[5] ={//存有5個結構體的數組 結構體數組{"AA",'m',22},//結構體數組元素 以逗號 隔開{"鄧超",'m',19},{"王大治",'m',14},{"陳姐",'w',12},{"XXX",'w',21},//這里的逗號寫不寫無所謂 };int b = Tea[3].age;struct teachr tea1 = Tea[0];for (int i = 0; i < 5; i++) {printf("name is %s ,age is %d, sex is %c \n",Tea[i].name,Tea[i].age,Tea[i].gender);}

結構體的內存空間:結構體的內存對齊方式--------(結構體所占內存空間大小 是以成員中最大數據類型為基本單位分配的) ?

*****? ?

struct test{char m[10];//如果把這一行放最后面 打印為 16double a;//double 8個字節float b;// int 、float 4個字節//為了節省存儲空間我們把定義的時候把所占內存最大的放最上面// char m[10]; double a; float a; 順序不同的放看結果 };printf("%lu \n",sizeof(struct test));

分配的空間 前面的必須是后面的整數倍

?

?實戰:

1.創建一個 Size 結構體,包含 width,height 兩個變量。 并寫以下函數: 函數 1,判斷兩個 size 是否等寬。 函數 2,判斷兩個 size 是否在等高。 函數 3,判斷兩個 size 是否相等2.創建一個 Point 結構體,包含 x,y 兩個變量。 并寫以下函數: 函數 1,判斷兩個點是否在一條水平線上。 函數 2,判斷兩個點是否在一條垂直線上。 函數 3,判斷兩個點是否相等3.某班有 5 個學生,三門課。分別編寫 3 個函數實現以下要求: (1) 求各門課的平均分; (2) 找出有兩門以上不及格的學生,并輸出其學號和不及格課程的成績; (3) 找出三門課平均成績在 85-90 分的學生,并輸出其學號和姓名 4.創建一個Rect結構體,包含origin,size兩個變量。其中origin是Point類型的,size是Size類型的。 并寫以下函數: 函數1,判斷兩個Rect是否相交。 函數2,判斷兩個Rect是否包含某個Point。 函數3,判斷一個Rect是否在另外一個Rect中。 ====== 耶穌有13個門徒, 循環開始報數, 報道3的人去死, 最后存活的就是叛徒,找到叛徒的原來位置 有A,B,C,D四個候選人, 有n個人對其進行投票, 按票數從高到低進行輸出. 好的題目

?

?

轉載于:https://www.cnblogs.com/benpaobadaniu/p/4691595.html

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的C:结构体的全部內容,希望文章能夠幫你解決所遇到的問題。

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