C語言-08復合類型-結構體

?一、結構體

1.結構體struct
struct關鍵字,允許自定義復合數據類型,將不同類型的值組合在一起,這種類型稱為結構體類型。

2.使用步驟
第一步:創建或聲明結構體
第二步:定義結構體變量
第三步:調用并操作結構體變量成員

1.1定義結構體(在main的外部來定義) ? 以人為例:姓名 年齡 性別 家庭住址 電話

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

//定義方法1:? ?(推薦)
struct Person {
?? ?char name[20];
?? ?int age;
?? ?char gender[10];
?? ?char address[50];
?? ?char tel[12];//長度要比實際多
};


//定義方法2:(推薦)??
typedef struct Person1 {
?? ?char name[20];
?? ?int age;
?? ?char gender[10];
?? ?char address[50];
?? ?char tel[12];//要比實際多
}Person1;

//定義方法3:? PERSON2對結構體類型struct Person2重命名
typedef struct Person2 {
?? ?char name[20];
?? ?int age;
?? ?char gender[10];
?? ?char address[50];
?? ?char tel[12];//要比實際多
}PERSON2;

//定義方法4:

int main() {

1.2定義結構體變量 ? ? ??

// 方法一? ? 直接賦值初始化
?? ?struct Person p1 = { "佳佳",18,"女","高新區","12345678910" };
//方法二? ? ?先聲明再賦值
?? ?struct Person p2;

1.3調用結構體成員(賦值)? ?

?/*p1.name = "喵喵";*/? ? ?//不能重新賦值,字符數組名是常量 ?


? ? strcpy(p2.name, "喵喵");? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //strcpy? ?需引入<string.h>頭文件
?? ?p2.age = 20;
?? ?strcpy(p2.gender, "男");
?? ?strcpy(p2.address, "中原區");
?? ?strcpy(p2.tel, "10987654321");

1.4查看取出數據

????printf("%s %d %s %s %s\n", p1.name, p1.age, p1.gender, p1.address, p1.tel);
?? ?printf("%s %d %s %s %s\n", p2.name, p2.age, p2.gender, p2.address, p2.tel);

//定義方法3中——查看數據
?? ?PERSON2 p3 = { "肖肖",18,"男","高新區","12345678910" };
?? ?printf("%s %d %s %s %s\n", p3.name, p3.age, p3.gender, p3.address, p3.tel);?

二、結構體成員的訪問(使用)

結構體成員的使用,分為兩種情況:
1、通過結構體變量訪問成員 ? 語法:結構體變量名.成員
2、通過結構體指針變量訪問 ? 語法:結構體指針變量->成員?

//通過結構體指針變量訪問 ? 語法:結構體指針變量->成員
?? ?strcpy(p3.name, "chhaoyang");
?? ?printf("%s %s\n", p3.name, (&p3)->name);? ? //成功打印,chhaoyang chhaoyang? ??
?? ?
?? ?struct Person p6;
?? ?printf("%s %s", p6.name, (&p6)->name);? ? //沒有賦值,打印出垃圾數據

總結:

1.在創建一個結構體變量后,需要給成員賦值。在沒有給成員賦值的情況下調用,打印的值是垃圾數據,可能導致程序異常終止。

2.不同結構體變量的成員是獨立的,互不影響,一個結構體變量的成員更改,不影響另外一個。

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

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

相關文章

Web前端基礎知識(一)

前端是構建網頁的一部分&#xff0c;負責用戶在瀏覽器中看到和與之交互的內容。 網頁是在瀏覽器中呈現內容的文檔或頁面。 通常&#xff0c;網頁使用HTML、CSS、JavaScript(JS)組成。 HTML:定義了頁面的結構和內容。包括文本、圖像、鏈接等。 CSS&#xff1a;定義頁面的樣式…

網絡安全詞云圖與技術淺談

網絡安全詞云圖與技術淺談 一、網絡安全詞云圖生成 為了直觀地展示網絡安全領域的關鍵術語&#xff0c;我們可以通過詞云圖&#xff08;Word Cloud&#xff09;的形式來呈現。詞云圖是一種數據可視化工具&#xff0c;它通過字體大小和顏色的差異來突出顯示文本中出現頻率較高…

fpgafor循環語句使用

genvar i;//循環變量名稱 generate for(i0;i<4;ii1)begin:tx//自己定義名稱 //循環內容 end endgenerate12位的16進制乘以4就是48位位寬的2進制 因為 222*2(2^4)16

【python高級】342-TCP服務器開發流程

CS模式&#xff1a;客戶端-服務端模式 TCP客戶端開發流程介紹&#xff08;五步&#xff09;&#xff08;C端&#xff09; 1.創建客戶端套接字對象 2.和服務端套接字建立連接 3.發送數據 4.接收數據 5.關閉客戶端套接字 TCP服務端開發流程&#xff08;七步&#xff09;&#xf…

es 中 terms set 使用

在 Elasticsearch 中&#xff0c;terms_set 查詢通常用于在一個字段上進行多值匹配&#xff0c;并支持設置一個條件&#xff08;例如最小匹配數量&#xff09;&#xff0c;讓查詢結果更具靈活性。為了展示如何使用 terms_set 查詢&#xff0c;我們首先會創建一個索引&#xff0…

修改采購訂單BAPI學習研究-BAPI_PO_CHANGE

這里是修改采購訂單BAPI&#xff0c;修改訂單數量和交貨日期的簡單應用 文章目錄 修改數量代碼運行結果 修改交貨日期代碼運行結果 修改數量 代碼 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&----…

WSL2高級配置之mirrored鏡像網絡

WSL2高級配置之mirrored鏡像網絡 引言版本要求更改配置 引言 WSL2默認的網絡模式為NAT。盡管WSL2原生提供了localhost轉發這種能夠方便地在Windows中訪問子系統服務的特性&#xff0c;但如果想反過來&#xff0c;則只能通過局域網或者想辦法橋接&#xff0c;這兩種方法都有些許…

《ROS2 機器人開發 從入門道實踐》 魚香ROS2——第4章內容

第4章 服務和參數——深入ROS2通信 4.2 用Python服務通信實現人臉檢測 4.2.1 自定義服務接口 1. 創建接口功能包 終端中輸入 ros2 pkg create chapt4_interfaces --dependencies sensor_msgs rosidl_default_generators --license Apache-2.0 ros2 pkg create 功能包名稱…

Linux系統編程深度解析:C語言實戰指南

文章一覽 前言一、gcc編譯系統1.1 文件名后綴1.2 C語言編譯過程1.3 gcc命令行選項 二、gdb程序調試工具2.1 啟動gdb和查看內部命令2.2 顯示源程序和數據2.2.1 顯示和搜索源程序2.2.2 查看運行時數據 2.3 改變和顯示目錄或路徑2.4 控制程序的執行2.4.1 設置斷點2.4.2 顯示斷點2.…

SQL優化原理與具體實例分析

一、引言 SQL&#xff08;Structured Query Language&#xff0c;結構化查詢語言&#xff09;是關系型數據庫的核心語言。在實際應用中&#xff0c;數據庫查詢性能往往成為系統性能瓶頸。因此&#xff0c;掌握SQL優化技巧對于提高數據庫查詢效率具有重要意義。本文將圍繞SQL優…

安卓藍牙掃描流程

目錄 系統廣播 流程圖 源碼跟蹤 系統廣播 掃描開啟廣播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_STARTED "android.bluetooth.adapter.action.DISCOVERY_STARTED";掃描關閉廣播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_FINISHED "android.b…

shell 編程(三)

條件測試命令 條件測試&#xff1a;判斷某需求是否滿足&#xff0c;需要有測試機制來實現 專用的測試表達式需要由測試命令輔助完成測試過程&#xff0c;評估布爾生命&#xff0c;以便用在條件性執行中 若真,則狀態碼變量$? 返回0 // echo $? 打印0 反之返回1 t…

八股(One Day one)

最近老是看到一些面試的視頻&#xff0c;對于視頻內部面試所提到的八股文&#xff0c;感覺是知道是什么&#xff0c;但是要說的話&#xff0c;卻又不知道該怎么說&#xff08;要不咋稱之為八股文呢&#xff09;&#xff0c;所以就想到寫一篇八股文總結的博客&#xff0c;以便進…

Rust 在前端基建中的使用

摘要 隨著前端技術的不斷發展&#xff0c;前端基礎設施&#xff08;前端基建&#xff09;的建設已成為提升開發效率、保障產品質量的關鍵環節。然而&#xff0c;在應對復雜業務場景與高性能需求時&#xff0c;傳統的前端技術棧逐漸暴露出諸多不足。近年來&#xff0c;Rust語言…

豆包MarsCode:a替換函數

問題描述 思路分析 在這個問題中&#xff0c;我們的目標是將字符串中的所有小寫字母 a 替換為 "%100"。為了實現這一點&#xff0c;我們需要分析問題的核心需求和合理的解決方案。以下是分析和思路的詳細步驟&#xff1a; 1. 理解問題 給定一個字符串 s&#xff0…

人臉生成3d模型 Era3D

從單視圖圖像進行3D重建是計算機視覺和圖形學中的一項基本任務&#xff0c;因為它在游戲設計、虛擬現實和機器人技術中具有潛在的應用價值。早期的研究主要依賴于直接在體素上進行3D回歸&#xff0c;這往往會導致過于平滑的結果&#xff0c;并且由于3D訓練數據的限制&#xff0…

【點估計】之Python實現

點估計是一種統計推斷方法,它利用樣本數據來估計總體的未知參數。在概率論和數理統計的框架下,點估計將總體的未知參數視為一個確定的值或一個具體的點,并試圖通過樣本數據來找到這個值的最佳估計。以下是對點估計的詳細解釋: 一、定義與原理 定義:點估計是根據樣本數據估…

rust與python互通

互通三件套 rust側與python互通的三個庫&#xff1a; pyo3 pythonize serde pyo3 pyo3跟用Python C API寫python擴展有點類似&#xff0c;核心是&#xff1a; #[pymodule] #[pyfunction]兩個注解。前者對應Py_InitModule&#xff0c;后者對應PyMethodDef。 下面是其它博…

Ubuntu系統下 npm install -g tauri 報錯問題處理

處理在安裝 Tauri 時遇到的問題&#xff0c;可以按照以下步驟進行操作 npm install -g taurinpm warn deprecated inflight1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async …

信貸域——互聯網金融理論基礎

摘要 互聯網金融這種新興的金融業態近幾年飛速發展&#xff0c;規模不斷擴大&#xff0c;互聯網金融在對我國金融體系和經濟發展影響中所占的分量越來越重&#xff0c;一定程度上也推動了互聯網金融理論的發展。 互聯網金融與傳統金融都是金融&#xff0c;有著相近的理論基礎。…