嵌入式開發學習日志Day17

第十一章? 結構體與共用體

一、結構體

1、結構體

一般形式? ? ?【struct? ?標識符】

結構體中的標識符一般首字母大寫;

【.】結構體成員運算符;? 優先級 1 級? ? 結合方向:從左至右;

【->】:指向結構體成員運算符;

eg:

#include<stdio.h>
struct Student 
{int id;char name[10];float score; 
};      //此處的分號不能省略;也可以在分號前定義變量,為全局變量;
int main(void)
{struct Student s;s.id = 1;       //為id進行賦值;strcpy(s.name,"zhnagsan");s.score = 99;struct Student s1;s1 = s;    //結構體的變量之間可以賦值printf( " %d  %s  %f\n",s.id,s.name,s.score);return 0;
}

結構體的作用:將不相關的東西打包封裝在一起,方便使用;

注意:

? ? ? ? 結構體不可以整體賦值,因為類型不匹配;

eg:結構體的初始化;

程序:

? ? ? ? ? ? ? ? ? 注意:初始化時,次序不能顛倒;

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?不寫的時候,默認為0;(稱為結構體的部分初始化);

?2、結構體在內存中所占的字節數

2.1 內存對齊

? ? ? ? 將變量按照4的整數倍進行存放,用空間換取時間,提高CPU的運行效率;

2.2結構體對齊原則

?1、默認按照計算機位數對齊;64位電腦中? ?64 / 8 = 8,最終的大小必須為8的倍數;

2、從結構體的成員中查找最大字節的成員,最終以此成員大小對齊;

3、把所有的成員按照聲明依次存放入內存,偏移量? /? sizeof(成員),必須整除;

?練習:

eg:(1)將結構體中的元素逆序輸出:

? ? ? ? ? ? ? ? 用swap函數并調用;?

?(2)對結構體里面的元素進行排序:(分別用成績,名字進行排序)

程序:

二、共用體

? ? ? ? 所有的成員公用相同的內存空間;4個字節;

定義:

注意:

?????????在公共體中成員進行訪問時,僅最后一位賦值是有效的;

? ? ? ? 總是從空間的起始位置進行共享的;

? ? ? ? 所有成員的首地址相同;

eg:判斷電腦是大端存儲還是小端存儲:

三 、枚舉類型

定義:如果一個變量只有幾種可能的值,則可以定義為枚舉類型。所謂“枚舉”是指將變量的值-一列舉出來,變量的值只限于列舉出來的值的范圍內。

? ? ? ? 和整型兼容的數據類型;

?四、用typedef定義類型

給已有的數據類型,取一個別名;

int INT;            //定義一個變量;
typedef int INT;    //給int型取別名為INT;

第12章 位運算

一、位運算

位運算必須是整型或者與整型相兼容的數據類型,(枚舉類型可以)

????????按位與“&”:指定位清零;

????????安慰或“|”:指定位變一;

? ? ? ? 按位異或“^”:指定為翻轉,其他位不變;

????????按位取反“~”(單目運算符):按位取反:

? ? ? ? 左移“<<”:eg:p <<1————p向左移一位,最高位丟失,最低位補零;

????????左移“>>":eg:p >>1————p向右移一位,最低位丟失,最高位補零;(注意右移時是否有符號);有符號右移為算數右移,無符號右移為邏輯右移;

?eg:將p的第0位,第三位,第六位變為1;

程序:

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

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

相關文章

發那科機器人5(異常事件和程序備份加載+ROBOGUIDE離線仿真)

發那科機器人5(異常事件和程序備份加載+ROBOGUIDE離線仿真) 一,異常事件和程序備份加載1,常見異常事件2,零點復歸介紹3,程序備份-加載(未整理)二,`ROBOGUIDE`離線仿真1,仿真軟件簡介及安裝步驟(未整理)2,機器人==導入與工具==與==工件添加==2.1,機器人導入(未整…

青少年編程與數學 02-019 Rust 編程基礎 01課題、環境準備

青少年編程與數學 02-019 Rust 編程基礎 01課題、環境準備 一、Rust核心特性應用場景開發工具社區與生態 二、Rust 和 Python 比較1. **內存安全與并發編程**2. **性能**3. **零成本抽象**4. **跨平臺支持**5. **社區與生態系統**6. **錯誤處理**7. **安全性**適用場景總結 三、…

Java反射 八股版

目錄 一、核心概念闡釋 1. Class類 2. Constructor類 3. Method類 4. Field類 二、典型應用場景 1. 框架開發 2. 單元測試 3. JSON序列化/反序列化 三、性能考量 四、安全與訪問控制 1. 安全管理器限制 2. 打破封裝性 3. 安全風險 五、版本兼容性問題 六、最佳…

操作系統的初步了解

目錄 引言&#xff1a;什么是操作系統&#xff1f; 一、設計操作系統的目的 二、操作系統是做什么的&#xff1a; 操作系統主要有四大核心任務&#xff1a; 1. 管理硬件 2. 運行軟件 3. 存儲數據 4. 提供用戶界面 如何理解操作系統的管理呢&#xff1f; 1. 什么是操作…

Mkdocs頁面如何嵌入PDF

嵌入PDF 嵌入PDF代碼 &#xff0c;注意PDF的相對地址 <iframe src"../個人簡歷.pdf (相對地址)" width"100%" height"800px" style"border: 1px solid #ccc; overflow: auto;"></iframe>我的完整代碼&#xff1a; <d…

鏈表結構深度解析:從單向無頭到雙向循環的實現全指南

上篇博客實現動態順序表時&#xff0c;我們會發現它存在許多弊端&#xff0c;如&#xff1a; ? 中間/頭部的插?刪除&#xff0c;時間復雜度為O(N) ? 增容需要申請新空間&#xff0c;拷?數據&#xff0c;釋放舊空間。會有不?的消耗。 ? 增容?般是呈2倍的增?&#xff0c;…

@PostConstruct @PreDestroy

PostConstruct 是 Java EE&#xff08;現 Jakarta EE&#xff09;中的一個注解&#xff0c;用于標記一個方法在對象初始化完成后立即執行。它在 Spring 框架、Java Web 應用等場景中廣泛使用&#xff0c;主要用于資源初始化、依賴注入完成后的配置等操作。 1. 基本作用 執行時…

【ArcGIS微課1000例】0146:將多個文件夾下的影像移動到一個目標文件夾(以Landscan數據為例)

本文講述將多個文件夾下的影像移動到一個目標文件夾,便于投影變換、裁剪等操作。 文章目錄 一、數據準備二、解壓操作三、批量移動四、查看效果五、ArcGIS操作一、數據準備 全球人口數據集Landscan2000-2023如下所示,每年數據位一個壓縮包: 二、解壓操作 首先將其解壓,方…

專業級 GIF 制作工具深度解析:Gifski 與 GIPHY CAPTURE 的技術對比與實戰指南

《Gifski 與 GIPHY CAPTURE&#xff1a;GIF 制作工具的深度對比與實戰應用》 最近在嘗試做一些培訓文檔&#xff0c;需要使用GIF圖做動態效果&#xff0c;把工具選型過程給大家做一下分享。 先看一張對比表&#xff0c;具體如下&#xff1a; 場景 Windows macOS Linux 移…

selenium替代----playwright

安裝 好處特點&#xff1a;這個東西不像selenium需要固定版本的驅動 pip config set global.index-url https://mirrors.aliyun.com/pypi/simplepip install --upgrade pippip install playwright playwright installplaywright install ffmpeg (處理音視頻的)驗證&#x…

Python代碼編程基礎

字符串 str.[]實現根據下標定位實現對元素的截取 for 循環可以實現遍歷 while 循環可以在實現遍歷的同時實現對某一下標數值的修改 字符串前加 r 可以實現對字符串的完整內容輸出 字符串前加 f 可以實現對字符串內{}中包裹內容的格式化輸出&#xff0c;僅在 v3.6 之后可用…

5月9號.

v-for: v-bind: v-if&v-show: v-model: v-on: Ajax: Axios: async&await: Vue生命周期: Maven: Maven坐標:

Spring 必會之微服務篇(1)

目錄 引入 單體架構 集群和分布式架構 微服務架構 挑戰 Spring Cloud 介紹 實現方案 Spring Cloud Alibaba 引入 單體架構 當我們剛開始學開發的時候&#xff0c;基本都是單體架構&#xff0c;就是把一個項目的所有業務的實現功能都打包在一個 war 包或者 Jar 包中。…

計算機的基本組成

#靈感# 記錄下基礎知識&#xff0c;此處專指計算機硬件方面&#xff0c;捎帶記下芯片知識。 綜述&#xff1a; 計算機硬件的基本組成包括運算器、控制器、存儲器、輸入設備和輸出設備五大部分。其中&#xff0c;集成在一起的運算器和控制器稱為 CPU&#xff08;處理器&#x…

【Python 列表(List)】

Python 中的列表&#xff08;List&#xff09;是最常用、最靈活的有序數據集合&#xff0c;支持動態增刪改查操作。以下是列表的核心知識點&#xff1a; 一、基礎特性 有序性&#xff1a;元素按插入順序存儲可變性&#xff1a;支持增刪改操作允許重復&#xff1a;可存儲重復元…

Qt 的原理及使用(1)——qt的背景及安裝

1. Qt 背景介紹 1.1 什么是 Qt Qt 是?個 跨平臺的 C 圖形??界?應?程序框架 。它為應?程序開發者提供了建?藝術級圖形 界?所需的所有功能。它是完全?向對象的&#xff0c;很容易擴展。Qt 為開發者提供了?種基于組件的開發模 式&#xff0c;開發者可以通過簡單的拖拽…

多分類問題softmax傳遞函數+交叉熵損失

在多分類問題中&#xff0c;Softmax 函數通常與交叉熵損失函數結合使用。 Softmax 函數 Softmax 函數是一種常用的激活函數&#xff0c;主要用于多分類問題中。它將一個實數向量轉換為概率分布&#xff0c;使得每個元素的值在 0 到 1 之間&#xff0c;且所有元素的和為 1。 …

數智讀書筆記系列032《統一星型模型--一種敏捷靈活的數據倉庫和分析設計方法》

引言 在當今數字化時代,數據倉庫作為企業數據管理的核心基礎設施,承擔著整合、存儲和提供企業數據的關鍵角色。隨著商業環境的快速變化和業務需求的日益復雜,數據倉庫的設計方法也在不斷演進,以適應新的挑戰和要求。 背景與意義 數據倉庫領域長期存在著兩種主流方法論之…

RT-Thread 深入系列 Part 1:RT-Thread 全景總覽

摘要&#xff1a; 本文將從 RTOS 演進、RT-Thread 的版本分支、內核架構、核心特性、社區與生態、以及典型產品應用等多維度&#xff0c;全面呈現 RT-Thread 的全景圖。 關鍵詞&#xff1a;RT-Thread、RTOS、微內核、組件化、軟件包管理、SMP 1. RTOS 演進與 RT-Thread 定位 2…

[docker基礎一]docker簡介

目錄 一 消除恐懼 1) 什么是虛擬化&#xff0c;容器化 2)案例 3)為什么需要虛擬化&#xff0c;容器化 二 虛擬化實現方式 1)應用程序執行環境分層 2)虛擬化常見類別 3)常見虛擬化實現 一&#xff09;主機虛擬化(虛擬機)實現 二&#xff09;容器虛擬化實現 一 消除恐…