C++—結構體

結構體(struct),是一種用戶自定義復合數據類型,可以包含不同類型的不同成員。

結構體的聲明定義和使用的基本語法:

// 聲明結構體struct 結構體類型
{    成員1類型 成員1名稱;    ...成員N類型 成員N名稱;
};

除聲明外,struct關鍵字可省略

成員的訪問可以通過 . 來進行

結構體成員默認值

在設計一個結構體的時候,可以根據需要向成員設置默認值

如果結構體中的變量,比如name、major_code、dormitory沒有被指定,那么程序就會輸出默認值結構體數組

作為用戶自定義數據類型,結構體是支持數組模式的。

// 聲明數組對象
[struct] 結構體類型 數組名[數組長度];
// 賦值數組的每一個元素
數組名[0] = {, , ..., };
數組名[1] = {, , ..., };
...
// 聲明和賦值同步的快捷寫法
[struct] 結構體類型 數組名[數組長度] = {{}, {}, ..., {}};

結構體指針

作為一種數據類型,結構體也是支持使用指針的。

結構體同樣可以使用指針數組,主要用于動態內存分配,方便管理大量結構體占用的內存。

struct Student
{string name;string major_code = "003032";       // 默認專業代碼int dormitory_num = 1;              // 默認分配1號樓宿舍
};struct Student stu = {"周杰輪", "003001", 5};struct Student *p = &stu;

通過new操作符申請指針空間

struct Student *p = new Student {"周杰輪", "003001", 5};

使用指針變量訪問結構體成員需要更換操作符號為:->

cout << p->name << endl;            // 訪問成員name
cout << p->major_code << endl;      // 訪問成員
major_codecout << p->dormitory_num << endl;   // 訪問成員dormitory_num

舉例:

#include "iostream"
using namespace std;int main()
{struct Student{string name;int age = 11;string gender = "男";};struct Student arr1[3] = {{"周杰輪"}, {"林軍杰"}, "王力鴻"};struct Student * p1 = arr1;     // 數組的對象本質上就是地址(指向數組的第一個元素的位置)cout << "數組的第一個元素中記錄的name是:" << p1[0].name << endl;cout << "數組的第二個元素中記錄的name是:" << p1[1].name << endl;cout << "數組的第三個元素中記錄的name是:" << p1[2].name << endl;// 通過new操作符,自行申請結構體數組的空間(可以通過delete回收)struct Student * p2 =new Student[3] {{"周杰輪"}, {"林軍杰"}, {"王力鴻"}};cout << "數組2的第一個元素中記錄的name是:" << p2[0].name << endl;cout << "數組2的第二個元素中記錄的name是:" << p2[1].name << endl;cout << "數組2的第三個元素中記錄的name是:" << p2[2].name << endl;delete[] p2;return 0;
}

其中,

struct Student * p1 = arr1; 

這個可以直接賦值的原因在于arr1表示的是數組,數組就是地址所所以可以直接賦值。

delete[] p2;

在刪除空間地址的時候,需要[ ]這個符號是因為處理的是數組。

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

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

相關文章

【計算機視覺(2)】

基于Python的OpenCV基礎入門——視頻的處理 視頻OpenCV視頻處理操作&#xff1a;創建視頻對象判斷視頻是否成功初始化讀取視頻幀獲取視頻特征設置視頻參數聲明編碼器保存視頻釋放視頻對象 視頻處理基本操作的代碼實現&#xff1a; 視頻 視頻是由一系列連續的圖像幀組成的。每一…

Spring—IoC

目錄 1. IoC的提出 2. Spring容器 2.1. Spring容器實現原理 2.2. Spring組件 2.2.1 XML標簽方式 2.2.2. 類注解方式 2.2.3. 方法注解方式 2.3. Spring容器分類 2.3.1. BeanFactory容器 2.3.2. ApplicationContext容器 2.3.3. WebApplicationContext容器 3. Spring中…

Srping 歷史

一、History of Spring and the Spring Framework Spring came into being in 2003 as a response to the complexity of the early J2EE specifications. While some consider Java EE and its modern-day successor Jakarta EE to be in competition with Spring, they are …

nginx 配置stream模塊代理并開啟日志配置

前言 nginx 1.20.1 nginx從1.9.0開始,新增加了一個stream模塊 確保nginx 安裝時開啟stream模塊 ./configure \ …… \ --with-stream \ --with-stream_ssl_module \ 修改nginx.conf #增加stream配置&#xff0c;開啟stream模塊 stream {log_format basic $remote_addr [$…

stm32 作為從機, fpga 作為主機,進行 spi 通信

stm32 作為從機, fpga 作為主機,進行 spi 通信 STM32和FPGA之間的SPI通信是直連形式。使用FPGA讀取傳感器的值,傳輸到STM32中進行計算。 STM32是將SPI接受過來的數據存儲到DMA中。 #include "SPI_DMA.h" #include <stm32f10x.h> uint8_t spi_buf[4];//FP…

idea啟動報錯:java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory

文章目錄 一、問題二、解決方法 一、問題 問題描述&#xff1a;idea整合Mybatis-plus的時候&#xff0c;啟動報錯&#xff1a;java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory 二、解決方法 可能原因&#xff1a;仔細檢查了一下&#xff0c;發現 mybati…

《王者榮耀》4月狂攬2.34億美元 單日流水1億美元 全球銷量第二

易采游戲網5月24日消息&#xff0c;在剛剛過去的四月&#xff0c;全球手游市場迎來了一場收益的盛宴&#xff0c;其中《王者榮耀》以其驚人的吸金能力&#xff0c;以2.34億美元的月收入在全球手游排行榜上位列第二。4月5日&#xff0c;這款由騰訊游戲開發的多人在線戰斗競技游戲…

C++相關概念和易錯語法(14)(初始化注意事項、vector、編譯器向上查找規則)

1.當我們在代碼中想要終止運行的話&#xff0c;我們可以采用Ctrl C或Ctrl Z&#xff0c;其中^C代表殺進程&#xff0c;^Z設置結束2.編碼表&#xff1a;我們目前比較熟悉的是ASCII碼編碼方式&#xff0c;但是我們發現平時使用的漢字無法通過ASCII編碼&#xff0c;除此之外&…

前端canvas項目實戰——在線圖文編輯器:序

目錄 前言一、 博主是誰&#xff1f;二、 關于本專欄1. 本專欄涉及的技術棧2. 專欄適合誰來學習&#xff1f;3. 你可以從專欄學到什么&#xff1f;4. 系列文章索引 三、 付費信息后記 前言 很高興&#xff0c;今天我又為自己設定了一個目標&#xff1a;帶領大家從入門HTML5中的…

自動化測試用例結構

標準的用例結構&#xff1a; 用力標題前提條件用例步驟預期結果實際結果 測試用例對比&#xff1a;

酷開系統 | 酷開科技把握智慧先機 AI賦能家庭場景

智慧化是當今世界科技發展的前沿領域之一。現在的智慧化&#xff0c;也正在逐步成為我們日常生活的一部分。電視系統也進入了數字化時代&#xff0c;AI的應用正在不斷擴展&#xff0c;其潛力似乎無窮無盡。 酷開科技深耕人工智能技術&#xff0c;在提升語音體驗、強化智能家居…

(1)無線電失控保護(二)

文章目錄 前言 4 參數配置 5 測試 6 使用接收器設置飛行模式(

第二證券:新股申購配號數什么意思?

股配號數量便是我們參與抽簽的數量&#xff0c;投資者申購新股之后&#xff0c;交易所會根據持有的股票市值進行配號。 投資者的市值越大&#xff0c;申購新股的配號越多&#xff0c;其中簽機會越大。主板、創業板、科創板一個申購單位是500股&#xff0c;意味著1萬元的市值有…

Scrapy 從創建到運行

Scrapy是一個強大的Python框架&#xff0c;專門用于構建網絡爬蟲。 步驟1&#xff1a;安裝Scrapy 首先&#xff0c;你需要安裝Scrapy框架來進行后續操作。以下是具體操作步驟&#xff1a; 1、使用pip命令安裝Scrapy&#xff1a; pip install scrapy 步驟2&#xff1a;創建S…

Java 定義類型處理MySQL point類型數據

1.三個類來處理 引入maven依賴 <!-- 引入 jts 庫解析 POINT --><dependency><groupId>com.vividsolutions</groupId><artifactId>jts</artifactId><version>1.13</version></dependency>import javax.validation.constr…

MySQL的數據類型之文本類型

目錄 文本類型類型&#xff1a; CHAR(size) VARCHAR(size) TEXT TINYTEXT, MEDIUMTEXT, LONGTEXT BLOB, MEDIUMBLOB, LONGBLOB ENUM 在mysql中&#xff0c;常用數據類型有三種&#xff1a; 1、文本類型&#xff1b; 2、數字類型&#xff1b; 3、日期/時間類型&#xff1b; …

【C++入門】—— C++入門 (下)_內聯函數

前言&#xff1a;在了解完前面的C基礎內容后&#xff0c;馬上我們就要真正不如C的學習了&#xff0c;但在之前讓我們最后了解最后一點點C入門知識&#xff01;來遲的520特別篇&#xff01; 本篇主要內容&#xff1a; 內聯函數 auto關鍵字 范圍for 指針空值nullptr C入門 1. 內聯…

星戈瑞CY3-COOH染料的穩定性、熒光特性

CY3-COOH染料&#xff0c;作為一種多功能的熒光標記試劑&#xff0c;在生物醫學研究和熒光成像技術中應用。其穩定性和熒光特性使得它在科研實驗使用。 CY3-COOH染料的穩定性 CY3-COOH染料以其穩定性而應用。首先&#xff0c;它展現出了良好的化學穩定性&#xff0c;不易受到環…

智慧醫療時代:探索互聯網醫院開發的新篇章

在智慧醫療時代&#xff0c;互聯網醫院開發正引領著醫療服務的創新浪潮。通過將先進的技術與醫療服務相結合&#xff0c;互聯網醫院為患者和醫生提供了全新的互動方式&#xff0c;極大地提升了醫療服務的便捷性和效率。本文將深入探討互聯網醫院的開發&#xff0c;介紹其技術實…

一鍵部署!QQ AI 聊天機器人!支持ChatGPT、文心一言、訊飛星火、Bing、Bard、ChatGLM、POE,多賬號,人設調教

隨著人工智能技術的不斷發展&#xff0c;智能聊天機器人已經成為我們日常生活中不可或缺的一部分。ChatGPT作為一款強大的人工智能聊天模型&#xff0c;能夠為我們提供高效、便捷的聊天體驗。那么&#xff0c;如何將ChatGPT接入QQ&#xff0c;實現智能聊天新體驗呢&#xff1f;…