激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言 structural body結構體詳解用法

C語言 structural body結構體詳解用法

2022-02-12 17:13Dark And Grey C/C++

C 數組允許定義可存儲相同類型數據項的變量,結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許您存儲不同類型的數據項,結構用于表示一條記錄,假設您想要跟蹤圖書館中書本的動態,您可能需要跟蹤每本書的下列屬

結構體

結構是一些值的集合,這些值稱為成員變量,結構的每個成員可以是不同類型的變量

 

結構體類型的聲明

創建 結構體類型 沒有占 內存空間,因為還 沒有 創建變量

舉個現實例子

                蓋房子
圖紙 --------------------> 房子
結構體類型        結構體變量
不分配空間         分配空間
結構體類型就好比房屋的圖紙,還沒有開始建造(就相當于告訴你有一個我有一個結構體類型(沒有分配空間),但還沒有決定創造變量)。

程序實例

C語言 structural body結構體詳解用法

#include<stdio.h>
struct book
{
  char name[20];
  char author[20];
  float price;

}b1,b2;//全局變量 - 靜態區
//拿 struct book 創建變量 b1,b2,與下面式子中 b 不同
//b1,b2是全局變量,b是局部變量

struct point
{
  int x;
  int y;
}p1,p2;//全局變量 - 靜態區

typedef struct student
{
  char name;
  int age;
  char sex;
  char identity_card_code;
}stu;//相當于取了個小名,或者說是簡寫

int main()
{
  struct book b;//拿 struct book 創建了一個變量 b  局部變量 - 棧區
  struct point p;//拿 struct point 創建了一個變量 p  局部變量 - 棧區
  
  struct s1;
  stu s2;// 該表達式與上表達式等價

  return 0;
}

 

結構體成員的類型:

指針、數組、標量,甚至其它的結構體

 

結構體變量的定義和初始化

程序一

#include<stdio.h>

typedef struct student
{
  char name;
  int age;
  char sex;
  char identity_card_code;
}stu;//相當于取了個小名,或者說是簡寫


int main()
{
  stu s = {"法外狂徒",18,"男","20210802"};
  return 0;
}

結構體嵌套情況下,初始化和定義

#include<stdio.h>

struct S
{
  int a;
  char c;
  double d;
};

struct T
{
  struct S s;
  char name[20];
  int num;
};

int main()
{
  struct T t = { {100,'c',3.14},"list" ,20 };// struct S是個結構體,所以也要打括號
  return 0;
}



 

結構體成員的訪問

結構體 . 結構體成員 ( . 操作符)

結構體 -> 結構體成員 ( -> 操作符)

例子

#include<stdio.h>

struct S
{
  int a;
  char c;
  double d;
};

struct T
{
  struct S s;
  char name[20];
  int num;
};

int main()
{
  struct T t = { {100,'w',3.14},"張三",20 };
  printf("%d %c %f %s %d\n",t.s.a,t.s.c,t.s.d,t.name,t.num); 


  struct T* pt = &t;
  printf("%d %c %f %s %d\n", (*pt).s.a, (*pt).s.c, (*pt).s.d, (*pt).name, (*pt).num);// 太挫 別用
  printf("%d %c %f %s %d\n", pt->s.a, pt->s.c, pt->s.d, pt->name, pt->num);
  return 0;
}

 

結構體傳參

程序一:

#include<stdio.h>

struct S
{
  int arr[10];
  int num;
  char ch;
  double d;
};

void print(struct S ss)//傳值調用    //效率太低
{
  printf("%d %d %d %d %c %lf\n", ss.arr[0],ss.arr[1],ss.arr[2],ss.num,ss.ch,ss.d);

}

int main()
{
  struct S s = { {1,2,3},100,'w',3.14 };
  print(s);//屬于傳值調用,且傳參的數值太多

  return 0;
}

程序二

#include<stdio.h>

struct S
{
  int arr[10];
  int num;
  char ch;
  double d;
};

void print(struct S* ps)//傳址調用 的 效率 比 傳值調用 要高,因為 傳址,只需要傳一個地址最大 8 個字節【64位操作系統】,而傳址,傳的是一個結構體的大小,所需空間很大,且效率低。
{
  printf("%d %d %d %d %c %lf\n", ps->arr[0], ps->arr[1], ps->arr[2],ps->num,ps->ch,ps->d);
  
}

int main()
{
  struct S s = { { 1, 2, 3 }, 100, 'w', 3.14 };
  print(&s);//傳址調用 - 如果是32位系統,地址大小為4字節,效率大大提升
  return 0;
}

傳址
還有一個好處:操作系統收回內存方便。
原因是 函數傳參的時候,參數是需要壓棧的。
// 棧區  :  存入數據 從高位地址開始使用,刪除 從低位開始刪
//例: 原數據 1 2 3 4 5 6 7 8 

//存入數據 1(高位) 2 3 4 5 6 7 8 9(低位),從高到低使用(類似堆金字塔一層堆一層)
// 在添加數據的過程就是壓棧的過程

// 刪除數據  1(高位) 2 3 4 5 6 7(低位), 從低位開始刪,(拆金字塔,從尖端(低位),一層一層的拆)

到此這篇關于C語言 structural body結構體詳解用法的文章就介紹到這了,更多相關C語言 結構體內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/DarkAndGrey/article/details/120605173

延伸 · 閱讀

精彩推薦
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 欧美一级高清片_欧美高清aa | 欧美a黄| 黑人一区二区三区四区五区 | 成人毛片在线免费看 | 日本看片一区二区三区高清 | 国产免费视频在线 | 久久精品观看 | 少妇一级淫片高潮流水电影 | 成人在线视频黄色 | 日本s级毛片免费观看 | 久久国产经典 | 黄色片免费看网站 | 性高潮一级片 | 国产美女视频黄a视频免费 日韩黄色在线播放 | 国内精品一级毛片免费看 | 国产91久久精品一区二区 | 免费啪视频在线观看 | 国产在线a | 国产精品一区在线免费观看 | 成人男女啪啪免费观看网站四虎 | 国产一国产精品一级毛片 | h视频在线观看免费 | 久久久久久久久久久久久久久伊免 | 精品国产91久久久久久久妲己 | 亚洲精品一区二区三区大胸 | 万圣街在线观看免费完整版 | 久成人 | 9191色| 中文字幕精品在线播放 | 国产青草视频在线观看视频 | 麻豆蜜桃在线观看 | 成人福利视频在线 | 色屁屁xxxxⅹ在线视频 | 日本不卡视频在线观看 | 国产精品二区高清在线 | 亚洲精品无码不卡在线播放he | 成人毛片100部免费观看 | 国产日韩在线观看一区 | 成人 精品 | 毛片免费看电影 | av大全在线免费观看 |