GESP編程等級認證C++三級7-字符、字符數組與字符串2

2.3 用字符串定義字符數組的好處

使用字符串定義字符數組需要額外考慮其末尾的“\0”,為什么還要使用這種看上去“麻煩”的方法呢?從圖5所示的代碼就能看出原因。

圖5 用字符串定義字符數組好處的代碼

從圖5中可以看出,a4是用字符串進行初始化的字符數組,a7是直接初始化的字符數組。第10-11行代碼分別打印a4和a7,代碼運行效果如圖6所示。

圖6 代碼運行效果

從圖6中可以看出,使用字符串進行初始化的字符數組a4,能打印出正確值;而直接初始化的字符數組a7,打印出來許多亂碼。其原因就在于a4包含了“\0”,cout執行到“\0”時,就會停止打印;而a7中不包含“\0”,cout會一直打印下去,直到遇到“\0”才停止,如圖7和圖8所示。

圖7 數組a4在內存中的值

圖8 數組a7在內存中的值

從圖7中可以看到,a4包含0x00,也就是“\0”,圖8中紅框是數組a7的內容,但是其不包含0x00,此時cout會繼續打印綠框中的內容,也就是圖6中的亂碼,直到打印到紫框中的0x00,cout才停止輸出。

3 字符數組的長度

當字符數組用字符串初始化時,可以通過strlen()函數獲取字符數組長度。

3.1 通過strlen()函數獲取字符數組長度

通過strlen()函數獲取字符數組長度時,是不算字符數組最后一個元素“\0”的,代碼如圖9所示。

圖9 通過strlen()函數獲取字符數組長度的代碼

此時,程序的輸出是5而不是6。

3.2 通過sizeof()獲取字符數組長度

在《GESP編程等級認證C++三級4-數組4》中提到,可以通過sizeof()獲取數組中元素的個數,那么通過sizeof()獲取字符數組長度的代碼如圖10所示。

圖10 通過sizeof()獲取字符數組長度的代碼

此時程序的輸出是6,也就是說,包含了數組末尾的“\0”。

4 真題解析

4.1 2024年12月選擇題

本題正確答案是“A”(官方參考答案是“D”)。strlen()獲取字符數組長度時,是不包含最后“0x00”的,需要注意的是,數組長度是要算上中間空格的。

4.2 2024年6月選擇題

本題答案是“C”。使用字符串初始化字符數組時,數組的最后一個元素隱式地設置為0x00,因此str的長度是顯式4加上隱式1,為5。

4.3 2024年6月判斷題

本題答案是“錯誤”。字符常量’\0’確實是表示字符串的結束,其值為0x00;而字符常量’0’的值是0x30,因此兩個常量不同。

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

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

相關文章

EasyRTC音視頻實時通話WebP2P技術賦能的全場景實時通信解決方案

一、技術背景 在數字化浪潮席卷全球的當下,實時通信技術憑借其即時性、高效性的優勢,已然成為推動各行業創新發展的核心動能。EasyRTC深度融合WebP2P技術,構建起去中心化的通信架構,實現了低延遲、高可靠的數據傳輸,為…

Claude MCP協議從入門到精通

目錄 一、什么是MCP協議? 二、Function Calling 和 MCP 協議的區別? 三、MCP相關網站 3.1 官方文檔 3.2 綜合型 MCP 資源聚合平臺 3.3 垂直領域 MCP Server 工具 3.4 開發者工具與社區 3.5 企業級服務與數據庫集成 3.6 新手友好型平臺 四、MCP 架構 4.1. MCP Hosts…

YOLOv11改進 | Conv/卷積篇 | 2024 ECCV最新大感受野的小波卷積WTConv助力YOLOv11有效漲點

YOLOv11改進 | Conv/卷積篇 | 2024 ECCV最新大感受野的小波卷積WTConv助力YOLOv11有效漲點 引言 在計算機視覺領域,卷積神經網絡(CNN)的核心操作——卷積運算正經歷著革命性的變革。2024年ECCV會議提出的**小波卷積(WTConv, Wav…

英偉達CEO黃仁勛COMPUTEX 2025演講實錄:AI工廠時代已來,Blackwell架構全面投產

5月19日,英偉達創始人兼首席執行官黃仁勛在臺北國際電腦展(COMPUTEX 2025)發表主題演講,系統闡述了英偉達從芯片設計向AI基礎設施服務商的戰略轉型,并披露了包括Blackwell架構升級、新一代AI計算平臺及機器人技術在內的…

RabbitMQ的核心原理及應用

在分布式系統架構中,消息中間件是實現服務解耦、流量緩沖的關鍵組件。RabbitMQ 作為基于 AMQP 協議的開源消息代理,憑借高可靠性、靈活路由和跨平臺特性,被廣泛應用于企業級開發和微服務架構中。本文將系統梳理 RabbitMQ 的核心知識&#xff…

服務攻防矩陣

4.1 中間件漏洞利用 WebLogic反序列化漏洞(CVE-2023-21839) 漏洞原理: T3協議反序列化未嚴格校驗,攻擊者可注入惡意序列化對象執行任意代碼。 攻擊流程: 使用ysoserial生成CommonsCollections6 payload&#xff1…

PictureThis 解鎖高級會員版_v5.3.0 拍植物知名稱和植物百科

PictureThis 解鎖高級會員版_v5.3.0 拍植物知名稱和植物百科 PictureThis是一款創新的植物識別與園藝指導應用程序,旨在幫助用戶快速識別植物種類、了解植物信息,并提供專業的園藝養護建議…

大模型 Agent 就是文字藝術嗎?

最近在技術圈里有一個很有趣的爭論:大模型 Agent 是不是就是各種 Prompt 的堆疊?像 Manus 這樣看起來很智能的 Agent,本質上是不是就是用巧妙的 Prompt 約束大模型生成更好的輸出?換句話說,這是不是一門文字藝術&#…

LeetCode 1340. 跳躍游戲 V(困難)

題目描述 給你一個整數數組 arr 和一個整數 d 。每一步你可以從下標 i 跳到&#xff1a; i x &#xff0c;其中 i x < arr.length 且 0 < x < d 。i - x &#xff0c;其中 i - x > 0 且 0 < x < d 。 除此以外&#xff0c;你從下標 i 跳到下標 j 需要滿…

三相電壓的優勢,應用場景,功率測量

三相系統概述 我國三相系統&#xff0c;由頻率相同&#xff0c;幅度類似的三個交流電壓組成&#xff0c;每個電壓相差120度。 三相系統的優勢 啟動電機&#xff1a;三個矢量間隔的電壓&#xff0c;在電機中產生旋轉磁場&#xff0c;不需要額外繞組就可以啟動電機。 減少線損…

[原創](計算機數學)(The Probability Lifesaver)(P14): 推導計算 In(1-u) 約等于 -u

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、…

Android12 Rom定制去掉剪貼板復制成功的Toast

Android12Rom定制去掉剪貼板復制成功的Toast提示 1.前言&#xff1a; 最近在rom定制化開發時&#xff0c;測試提了一個bug&#xff0c;在瀏覽器或者文本里面使用剪貼板復制成功后會有一個Toast提示&#xff0c;這種體驗不是很好&#xff0c;因為每次復制成功都有一個提示&…

SOC-ESP32S3部分:9-GPIO輸入按鍵狀態讀取

飛書文檔https://x509p6c8to.feishu.cn/wiki/L6IGwHKV6ikQ08kqwAwcAvhznBc 前面我們學習了GPIO的輸出&#xff0c;GPIO輸入部分其實也是一樣的&#xff0c;這里我們使用按鍵作為GPIO輸入例程講解&#xff0c;分三步走。 查看板卡原理圖&#xff0c;確定使用的是哪個GPIO查看G…

高可用集群keepalived

1.不同操作系統的安裝 1.1 不同系統編譯安裝 ubuntu環境 apt-get - y install libssl-dev libpopt-dev daemon build-essential libssl-dev openssl libpopt-dev libsnmp-dev libnl-3-dev libnl-genl-3-dev centos環境 &#xff08;其他的下同&#xff09; yum install - y…

SpringCloud - 整合MQ實現消息總線服務

一、背景介紹 每當修改配置文件內容&#xff0c;如果需要客戶端也同步更新&#xff0c;就需要手動調用/refresh接口&#xff0c;以便客戶端能獲取到最新的配置內容。 當客戶端越來越多的時候&#xff0c;通過人工進行處理顯然非常雞肋。有沒有一種更加高效的辦法&#xff0c;…

測試W5500的第3步_使用ioLibrary庫創建TCPServer

W5500是一款具有8個Socket的網絡芯片&#xff0c;支持TCP Server模式&#xff0c;最多可同時連接8個客戶端。本文介紹了基于STM32F10x和W5500的TCP Server實現&#xff0c;包括SPI初始化、W5500復位、網絡參數配置、Socket狀態管理等功能&#xff0c;適用于需要多客戶端連接的嵌…

Web攻防-SQL注入數據庫類型用戶權限架構分層符號干擾利用過程發現思路

知識點&#xff1a; 1、Web攻防-SQL注入-產生原理&應用因素 2、Web攻防-SQL注入-各類數據庫類型利用 演示案例-WEB攻防-SQL注入-數據庫類型&架構分層&符號干擾 一、數據庫知識 1、數據庫名&#xff0c;表名&#xff0c;列名&#xff0c;數據 2、自帶數據庫&…

手機合集(不定期更新)

一、華為手機&#xff1a; 1.華為手機自助維修的方法&#xff1a; https://blog.csdn.net/humors221/article/details/145946128 2.華為手機實用功能介紹&#xff1a; https://blog.csdn.net/humors221/article/details/132514011 3.華為手機清理大數據的方法&#xff1a;…

移動安全Android——ROOT檢測繞過

工具準備 Magisk GitHub - topjohnwu/Magisk: The Magic Mask for Android ZygisckNext GitHub - Dr-TSNG/ZygiskNext at v1.2.8 Shamiko Releases LSPosed/LSPosed.github.io 安卓ROOT教程 Magisk 安裝教程 - Magisk 中文網 問題 大多數手機在ROOT狀態下會出現APP閃…

Python高效網絡爬蟲開發指南

Python 網絡爬蟲入門與實戰 一、引言 隨著互聯網數據的爆炸性增長&#xff0c;獲取和分析這些數據變得越來越重要。網絡爬蟲作為數據采集的重要工具&#xff0c;在這其中扮演了不可或缺的角色。 二、環境搭建 首先我們需要安裝Python環境以及一些必要的庫&#xff1a; req…