408學習之c語言(結構體)

? ? ? 今天給大家分享C語言中結構體的幾種常見使用方法,包括基礎結構體定義與初始化,結構體指針的兩種訪問方式,結構體數組的遍歷,動態內存分配與結構體使用,typedef簡化結構體類型

基礎結構體定義與使用

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>;// 定義一個學生結構體
struct student {char name[20];  // 姓名int num;        // 學號float score;    // 分數
};int main()
{// 結構體變量初始化struct student s1 = {"zhangsan",10001,99.21};// 打印結構體成員printf("%s\n %d\n %.2f\n", s1.name, s1.num, s1.score);// 聲明結構體變量struct student s2;// 從輸入獲取結構體成員值scanf("%s %d %f",&s2.name,&s2.num,&s2.score); //.2的格式不能用在scanf里面 printf("%s\n %d\n %.2f\n", s2.name, s2.num, s2.score);// 結構體數組struct student sarr1[3];scanf("%s %d %f", &sarr1[0].name, &sarr1[0].num, &sarr1[0].score);printf("%s\n%d\n%.2f\n", sarr1[0].name, sarr1[0].num, sarr1[0].score);return 0;
}

結構體指針操作

struct student {char name[20];  // 姓名int id;         // 學號float score;    // 分數
};int main()
{struct student s1 = { "wangwu",10086,99.98 };// 定義結構體指針并指向s1struct student* ps1 = &s1;// 通過指針訪問結構體成員 - 方法1printf("%-s  ,%-d  ,%-.2f\n", (*ps1).name, (*ps1).id, (*ps1).score);// 通過指針訪問結構體成員 - 方法2(更常用)printf("%-s  ,%-d  ,%-.2f", ps1->name,ps1->id,ps1->score);return 0;
}

結構體數組與指針遍歷

struct student {char name[20];  // 姓名int id;         // 學號float score;    // 分數
};int main()
{// 初始化三個學生結構體struct student s1 = { "zhangsan",10086,88.9 };struct student s2 = { "lisi",10087,98.9 };struct student s3 = { "wangwu",10088,89.9 };// 結構體數組初始化struct student arr1[3] = { s1,s2,s3 };// 結構體指針指向數組首地址struct student* p = arr1;int i = 0;// 遍歷結構體數組for (i = 0; i < 3; i++){printf("%-s\n%-d\n%-.2f\n", p[i].name, p[i].id, p[i].score);}return 0;
}

動態內存分配與結構體

struct student {char name[20];  // 姓名int id;         // 學號float score;    // 分數
};int main()
{// 聲明結構體指針struct student* ps1;// 動態分配內存ps1 = malloc(sizeof(struct student));// 賦值操作strcpy(ps1->name,"wangdao");  // 字符串賦值需要使用strcpyps1->id = 1235;ps1->score = 99.86;printf("%-s  ,%-d  ,%-.2f", ps1->name, ps1->id, ps1->score);return 0;
}

使用typedef簡化結構體

// 使用typedef定義結構體別名
typedef struct student {char name[20];  // 姓名int id;         // 學號float score;    // 分數
}stu,*pstu;  // stu == struct student; pstu == struct student *; int main()
{// 使用別名聲明變量stu s1 = { "wangwu",10081, 90.81 };pstu p1 = &s1;  // p1是指向stu類型的指針return 0;
}// typedef也可以用于基本數據類型
typedef int INTEGER; // 將int定義為INTEGER
int main()
{INTEGER num = 0;  // 等同于int num = 0;printf("%d\n", num);return 0;
}

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

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

相關文章

Navicat中設計表格默認值時,如何不設置成NULL,而是設置成空文本?

在 Navicat 中設計表時&#xff0c;將字段的默認值設置為空文本而不是 NULL 是一個非常常見的需求。操作很簡單&#xff0c;但有幾個細節需要注意。■ 方法一&#xff1a;通過“設計表”界面設置&#xff08;最常用&#xff09;1. 連接數據庫并找到表&#xff1a;在左側連接導…

深入理解Java虛擬機:JVM高級特性與最佳實踐(第3版)第十三章知識點問答(15題)

預告下一本 可能是mysql8的書籍 或者是AI應用工程的基本崗位所有技能 問題1 什么是 線程安全&#xff1f;在 Java 中如何定義“線程安全”&#xff1f;線程安全&#xff08;Thread Safety&#xff09; 的定義是&#xff1a; 當多個線程同時訪問某個類的對象時&#xff0c;無論運…

【醫療 AI】Baichuan-M2:大語言模型在醫療領域的動態驗證框架

Baichuan-M2 醫療大模型&#xff1a;技術解讀與使用方法 Baichuan-M2&#xff1a;大語言模型在醫療領域的動態驗證框架 【醫療 AI】Baichuan-M2&#xff1a;大語言模型在醫療領域的動態驗證框架0. Baichuan-M2 模型簡介0.1 基本信息0.2 主要貢獻0.3 論文摘要1. 引言2. 驗證系統…

Ubuntu\Linux環境中驅動版本配置cudaToolKit

修改環境變量。 1. 首先檢查當前的環境變量 # 查看當前PATH echo $PATH# 查看當前LD_LIBRARY_PATH echo $LD_LIBRARY_PATH# 查看當前CUDA_HOME echo $CUDA_HOME2. 確定正確的CUDA安裝路徑 # 查看系統中有哪些CUDA版本 ls /usr/local/cuda*3. 修改環境變量(永久生效) 編輯…

Linux基礎開發工具(gcc/g++,yum,vim,make/makefile)

目錄 軟件包管理器——yum Linux下&#xff0c;軟件的安裝 yum與軟件包的關系 yum命令的運用 1.查看軟件包 2.安裝/刪除軟件包 編輯器——vim vim的基本概念 vim的基本操作 命令模式命令 移動光標 刪除文字 撤銷上一次操作 跳至指定的行 底行模式命令 編譯器——…

數據結構之跳表

跳表&#xff08;Skip List&#xff09;是一種基于概率平衡的數據結構&#xff0c;通過多層有序鏈表實現高效的查找、插入和刪除操作。它在最壞情況下時間復雜度為 (O(n))&#xff0c;但通過隨機化設計&#xff0c;平均時間復雜度可優化至 (O(\log n))&#xff0c;與平衡二叉搜…

線程概念,控制

一、線程概念 線程概念&#xff1a;進程內部的一個執行流&#xff0c;輕量化。 觀點&#xff1a;進程是系統分配資源的基本單位&#xff0c;線程是CPU調度的基本單位。 在理解線程之前&#xff0c;我們在談一下虛擬地址空間。 我們都知道進程是通過頁表將虛擬地址轉化為物理地址…

RabbitMQ 高可用實戰篇(Mirrored Queue + Cluster + 持久化整合)

RabbitMQ 高可用實戰篇&#xff08;Mirrored Queue Cluster 持久化整合&#xff09;1. 前言 在生產環境中&#xff0c;單節點 RabbitMQ 容易因故障導致消息丟失或業務中斷。 通過高可用隊列、集群部署和持久化策略&#xff0c;可以保證 消息可靠性、節點容錯和持續服務。 本文…

支持向量機:從理論到實踐

支持向量機&#xff1a;從理論到實踐 文章目錄支持向量機&#xff1a;從理論到實踐一。理論概述1. 線性可分支持向量機1.1 基本概念與數學形式1.2 函數間隔與幾何間隔1.3 間隔最大化與優化問題1.4 拉格朗日對偶理論與求解1.5 支持向量與決策函數2. 近似線性可分數據&#xff08…

LVS與Keepalived詳解(二)LVS負載均衡實現實操

文章目錄前言一、LVS-DR 模式詳解1.1 數據包流向分析1.2 DR 模式的特點二、LVS-DR 集群部署實戰2.1 環境準備2.2 配置負載調度器&#xff08;Director Server&#xff09;2.3 配置節點服務器&#xff08;Real Server&#xff09;2.4 測試驗證三、前期回顧3.1 LVS 三種工作模式及…

歸一化實現原理

歸一化&#xff08;Normalization&#xff09;是一種將數據轉換到相同尺度的預處理技術&#xff0c;它通常用于讓不同特征&#xff08;或數據項&#xff09;具有相同的量綱或范圍。在聯邦學習中&#xff0c;歸一化可以用來處理非獨立同分布&#xff08;Non-IID&#xff09;**數…

企業級實戰:構建基于Qt、C++與YOLOv8的模塊化工業視覺檢測系統

一、概述 在追求高效與精密的現代制造業中&#xff0c;自動化光學檢測&#xff08;AOI&#xff09;已成為保障產品質量的核心技術。傳統的質檢流程往往受限于人工效率與主觀判斷&#xff0c;難以滿足大規模、高精度的生產需求。本文旨在研發一套完整的、企業級的工業視覺異常檢…

【目標檢測】metrice_curve和loss_curve對比圖可視化

代碼如下&#xff1a; import warnings warnings.filterwarnings(ignore)import os import pandas as pd import numpy as np import matplotlib.pylab as pltpwd os.getcwd()names [model1, model2, model3,ours]plt.figure(figsize(10, 10))plt.subplot(2, 2, 1) for i in …

【LeetCode hot100|Week2】滑動窗口,子串

筆記用于個人復習和鞏固&#xff0c;題解非原創&#xff0c;參考LeetCode官方題解以及各個大佬的解法&#xff0c;希望給大家帶來幫助&#xff0c;同時筆記也能督促我學習進步 這周主要把滑動窗口和子串的題目刷了一遍 文章目錄Week2D1 滑動窗口209. 長度最小的子數組713. 乘積…

vue2純前端對接海康威視攝像頭實現實時視頻預覽

vue2純前端對接海康威視攝像頭實現實時視頻預覽一、環境準備二、代碼集成1.1 準備webrtcstreamer.js&#xff0c;粘貼即用&#xff0c;不用做任何修改1.2 封裝視頻組件&#xff0c;在需要視頻的地方引入此封裝的視頻組件即可&#xff0c;也是粘貼即用&#xff0c;注意其中impor…

Android 設置禁止截圖和禁止長截圖

1.禁止截圖 在 Activity 代碼中 , 可以在調用 setContentView 函數之前 ,為 Window 窗口對象 設置 LayoutParams.FLAG_SECURE 標志位 , 可以禁止對本界面進行截屏 ,Window 窗口對象 , 可通過 getWindow 方法獲取 ,核心代碼如下 :getWindow().setFlags(LayoutParams.FLAG_SECUR…

AR 巡檢在工業的應用|阿法龍XR云平臺

AR 巡檢的應用覆蓋電力、石油化工、智能制造、軌道交通、冶金等對設備可靠性和安全性要求極高的行業&#xff0c;具體場景包括&#xff1a;電力行業變電站內設備的狀態檢查&#xff1a;通過 AR 眼鏡掃描設備&#xff0c;實時顯示設備額定參數、歷史故障記錄、實時傳感器數據&am…

【C++】STL詳解(七)—stack和queue的介紹及使用

? 堅持用 清晰易懂的圖解 代碼語言&#xff0c; 讓每個知識點都 簡單直觀 &#xff01; &#x1f680; 個人主頁 &#xff1a;不呆頭 CSDN &#x1f331; 代碼倉庫 &#xff1a;不呆頭 Gitee &#x1f4cc; 專欄系列 &#xff1a; &#x1f4d6; 《C語言》&#x1f9e9; 《…

深度學習周報(9.8~9.14)

目錄 摘要 Abstract 1 LSTM相關網絡總結與對比 1.1 理論總結 1.2 代碼運行對比 2 量子計算入門 3 總結 摘要 本周首先總結了LSTM、Bi-LSTM與GRU的區別與優缺點&#xff0c;對比了三者實戰的代碼與效果&#xff0c;還另外拓展了一些循環神經網絡變體&#xff08;包括窺視…

Quat 四元數庫使用教程:應用場景概述

基礎概念 四元數是一個包含四個元素的數組 [x, y, z, w]&#xff0c;其中 x,y,z表示虛部&#xff0c;w 表示實部。單位四元數常用于表示3D空間中的旋轉。 1. 創建和初始化函數 create() - 創建單位四元數 應用場景&#xff1a;初始化一個新的四元數對象&#xff0c;通常作為其他…