C 語言嵌套結構體

C 語言嵌套結構體

C為我們提供了將一個結構嵌套在另一個結構中的功能,從而創建復雜的數據類型。例如,我們可能需要在結構中存儲實體員工的地址。而地址也可以包含其他信息,例如街道編號,城市,地區和密碼。因此,要存儲員工的地址,我們需要將員工的地址存儲到一個單獨的結構中,并將該結構的地址嵌套到該結構的員工中。看下面的程序。

示例

#include<stdio.h>
struct address 
{char city[20];int pin;char phone[14];
};
struct employee
{char name[20];struct address add;
};
void main ()
{struct employee emp;printf("輸入員工信息?\n");scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone);printf("打印員工信息....\n");printf("姓名: %s\n城市: %s\nP編號: %d\n電話: %s",emp.name,emp.add.city,emp.add.pin,emp.add.phone);
}

輸出結果

輸入員工信息?Arun            Delhi           110001       1234567890    打印員工信息....   姓名: Arun      城市: Delhi  編號: 110001電話: 1234567890

該結構可以通過以下方式嵌套。

  1. 通過單獨的結構
  2. 通過嵌入式結構

1)分開的結構

在這里,我們創建了兩個結構,但是從屬結構應在主結構內部用作成員。看以下示例。

示例

struct Date
{int dd;int mm;int yyyy; 
};
struct Employee
{   int id;char name[20];struct Date doj;
}emp1;

可以看到,doj是date類型的變量。這里,doj被用作Employee結構中的成員。這樣,我們可以在許多結構中使用Date結構。

2)嵌入式結構

嵌入式結構使我們能夠在結構內部聲明結構。因此,它需要較少的代碼行,但不能在多個數據結構中使用。看以下示例。

示例

struct Employee
{   int id;char name[20];struct Date{int dd;int mm;int yyyy; }doj;
}emp1;

訪問嵌套結構

我們可以通過Outer_Structure.Nested_Structure.member訪問嵌套結構的成員,如下所示:

示例

e1.doj.dd
e1.doj.mm
e1.doj.yyyy

C嵌套結構示例

讓我們來看一個簡單的C語言嵌套結構示例。

示例

#include<stdio.h>
#include<string.h>struct Employee
{   int id;char name[20];struct Date{int dd;int mm;int yyyy; }doj;
}e1;
int main( )
{//存儲員工信息e1.id=101;strcpy(e1.name, "Sonoo Jaiswal");//將字符串復制到字符數組中e1.doj.dd=10;e1.doj.mm=11;e1.doj.yyyy=2014;//打印第一個雇員信息printf( "員工ID : %d\n", e1.id);printf( "員工姓名 : %s\n", e1.name);printf( "員工加入日期 (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd,e1.doj.mm,e1.doj.yyyy);return 0;
}

輸出:

員工ID : 101
員工姓名 : Seagull Ali
員工加入日期 (dd/mm/yyyy) : 10/11/2014

將結構傳遞給函數

和其他變量一樣,結構也可以傳遞給函數。我們可以將結構成員傳遞給函數,或者一次傳遞結構變量。下面的示例將結構變量employee傳遞給display()函數,該函數用于顯示雇員的詳細信息。

示例

#include<stdio.h>
struct address 
{char city[20];int pin;char phone[14];
};
struct employee
{char name[20];struct address add;
};
void display(struct employee);
void main ()
{struct employee emp;printf("輸入員工信息?\n");scanf("%s %s %d %s",emp.name,emp.add.city, &emp.add.pin, emp.add.phone);display(emp);
}
void display(struct employee emp)
{printf("打印員工信息.....\n");printf("%s %s %d %s",emp.name,emp.add.city,emp.add.pin,emp.add.phone);
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162442.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CVE-2022-21661

簡介 CVE-2022-21661是一個與WordPress相關的漏洞&#xff0c;涉及到SQL注入問題。該漏洞主要源于WordPress的WQ_Tax_Query類中的clean_query函數&#xff0c;可能允許攻擊者通過控制傳遞給該函數的數據來控制生成的SQL查詢&#xff0c;從而執行任意的SQL代碼。 當WordPress的…

【ROS 2 進階-MoveIt!】MoveIt!中的關鍵節點

所有內容請查看&#xff1a;博客學習目錄_Howe_xixi的博客-CSDN博客 原文檔鏈接&#xff1a;Docs

自動駕駛軌跡預測學習筆記

目錄 VectorNet&#xff1a;自動駕駛軌跡預測 CVPR2023 軌跡預測冠軍方案 QCNeXt VectorNet&#xff1a;自動駕駛軌跡預測 VectorNet&#xff1a;自動駕駛軌跡預測 - 知乎 CVPR2023 軌跡預測冠軍方案 QCNeXt CVPR2023 軌跡預測冠軍方案&#xff01;QCNeXt&#xff1a;新一代…

什么是索引下推

索引下推介紹 索引下推&#xff08;INDEX CONDITION PUSHDOWN&#xff0c;簡稱 ICP&#xff09;是在 MySQL 5.6 針對掃描二級索引的一項優化改進。總的來說是通過把索引過濾條件下推到存儲引擎&#xff0c;來減少 MySQL 存儲引擎訪問基表的次數以及 MySQL 服務層訪問存儲引擎的…

持續格式刷

雙擊格式刷即可

專訪|OpenTiny 開源社區 常浩:完成比完美更重要

前言 2023年已過大半&#xff0c;備受關注的 OpenTiny*開源之夏活動也順利結項。開源之夏由中國科學院軟件研究所發起的計劃&#xff0c;目的在于鼓勵在校學生積極參與開源軟件的開發維護&#xff0c;推動優秀開源軟件社區的繁榮發展。該活動聯合各大開源社區&#xff0c;聚焦…

令人贊嘆的花里胡哨的代碼雨動畫效果

【點我-這里送書】 本人詳解 作者:王文峰,參加過 CSDN 2020年度博客之星,《Java王大師王天師》 公眾號:JAVA開發王大師,專注于天道酬勤的 Java 開發問題中國國學、傳統文化和代碼愛好者的程序人生,期待你的關注和支持!本人外號:神秘小峯 山峯 轉載說明:務必注明來源(…

element emitter broadcast向下廣播 dispatch向上分派

emitter 項目使用element的emitter.js&#xff0c;做個使用記錄 function broadcast(componentName, eventName, params) {this.$children.forEach(child > {const name child.$options.name;if (name componentName) {child.$emit.apply(child, [eventName].concat(para…

pytorch訓練出現的bug

訓練過后發現.csv文件左側出現了幾列unname和一列0&#xff0c;1&#xff0c;2。這個時候在訓練就會從unname那一列開始訓練。我們需要把這幾列刪除&#xff0c;之后再重新訓練

華清遠見嵌入式學習——網絡編程——作業3

目錄 作業要求&#xff1a;基于UDP的TFTP文件傳輸 代碼 下載功能效果圖?編輯 上傳功能效果圖 思維導圖 模擬面試題和答案&#xff08;定期更新&#xff09; 作業要求&#xff1a;基于UDP的TFTP文件傳輸 完成文件的上傳和下載功能 代碼 #include<myhead.h>//實現…

前端Math屬性方法匯總集錦

Description of Math Math 是一個內置對象&#xff0c;它擁有一些數學常數屬性和數學函數方法。Math 不是一個函數對象。 Math 用于 Number 類型。它不支持 BigInt。 與其他全局對象不同的是&#xff0c;Math 不是一個構造器。Math 的所有屬性與方法都是靜態的。引用圓周率的寫…

『heqingchun-Ubuntu系統+x86架構+編譯安裝ffmpeg+帶有nvidia硬件加速』

Ubuntu系統x86架構編譯安裝ffmpeg帶有nvidia硬件加速 一、準備文件 注&#xff1a;可直接下載我上傳的CSDN資源&#xff0c;然后直接跳到"一"中的第"3"項"將文件按以下順序存放"。 ffmpeg源碼&#xff1a;音視頻開發ffmpeg編譯所需資源文件 其…

Pgsql常用命令

Postgresql數據庫常用命令 1、連接數據庫, 默認的用戶和數據庫是postgres psql -h host -p port -U user -d dbname 2、執行sql文件 psql -h ${PGHOST} -p ${PGPORT} -U ${PGUSER} -d safe_browser -f xxxx.sql \i /xxxxx/xxx/xxxxxx.sql 3、切換數據庫,相當于mysql的use d…

Ajax技

Ajax的特點 異步提交&#xff1a;Ajax采用異步通信方式&#xff0c;能夠在頁面無需重新加載的情況下向服務器發送請求并接收響應數據&#xff0c;提升了用戶體驗。無需插件&#xff1a;Ajax是基于標準瀏覽器的Javascript和XMLHttpRequest對象實現的&#xff0c;無需安裝插件或…

打開和關閉conda,激活和關閉conda,詳解退出conda環境

Python編程技巧&#xff1a;詳解退出conda環境 https://www.python100.com/html/110499.html # 創建虛擬環境~/anaconda3/bin/conda create -n name python3.6 # 激活虛擬環境 source ~/anaconda3/bin/activate name # 查看所有環境 conda env list # 激活虛擬環境 conda activ…

使用JVS低代碼表單引擎高效管理文件,實現個性化需求

在數字化、信息化的時代&#xff0c;文件上傳與管理功能已經成為了各類應用系統的標配。無論是在辦公自動化、項目管理還是內容管理系統中&#xff0c;我們都希望能輕松、高效地完成文件的上傳、查看和管理。JVS低代碼表單引擎提供了文件類組件。無論是文件類型、大小的限制&am…

ubuntu Setforeground 前臺應用切換

場景分析 有這樣一個系統&#xff0c;一個服務主進程用于接收指令&#xff0c;其它服務是獨立的gui 程序&#xff0c;服務進程根據命令將對應的gui 程序切換到前臺。 windows 平臺有Setforeground 這個api&#xff0c;可以根據進程ID&#xff0c;將某個應用的窗口切換到前臺。…

SpringBoot整合Redis,redis連接池和RedisTemplate序列化

SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置類RedisConfig&#xff0c;實現RedisTemplate序列化1.4 代碼測試 2、SpringBoot整合redis幾個疑問&#xff1f;2.1、Redis 連接池講解2.2、RedisTemplate和StringRedisTemplate 3、RedisTemp…

UniApp打包教程:使用HBuilder X和AppUploader完成原生App云打包和上架指南“

? 目錄 uniapp進行打包 使用上架工具appuplode進行發包 1.登錄appuploder軟件 2.登陸開發者App Store后臺 uniapp進行打包 在HBuilder X編輯器中打開需要打包的項目&#xff0c;然后點擊上面菜單欄中 發行 > 原生App-云打包&#xff0c;對以下彈出的彈窗進行內容填寫 ?…

競賽python區塊鏈實現 - proof of work工作量證明共識算法

文章目錄 0 前言1 區塊鏈基礎1.1 比特幣內部結構1.2 實現的區塊鏈數據結構1.3 注意點1.4 區塊鏈的核心-工作量證明算法1.4.1 拜占庭將軍問題1.4.2 解決辦法1.4.3 代碼實現 2 快速實現一個區塊鏈2.1 什么是區塊鏈2.2 一個完整的快包含什么2.3 什么是挖礦2.4 工作量證明算法&…