為什么C++主函數 main 要寫成 int 返回值 | main(int argc, char* argv[]) 這種寫法是什么意思?

????????主函數 main 要寫成 int 返回值?

????????main(int argc, char* argv[])?為什么里面沒有 cin 也能讀到數據,數據是怎么傳進去的?

????????本文將一步步回答這些問題。

1. 為什么 main 要寫成 int

????????C++ 標準(ISO/IEC 14882)規定,main 必須返回 int,這是程序向操作系統報告執行結果的方式

原因

操作系統約定

????????程序退出時需要給系統一個退出碼(Exit Code),整數最合適

歷史兼容性

????????從 C 語言時代就規定了 int main,C++ 繼承下來

? ? ? ? 0表示程序成功結束

????????非 0 表示發生錯誤,數值可以代表不同的錯誤類型。

示例

int main() {if (some_error_happened) {return 1; // 返回 1 表示出錯}return 0; // 返回 0 表示成功
}

????????在 Linux / macOS 終端:

./my_program
echo $?

????????在 Windows 命令行:

my_program.exe
echo %ERRORLEVEL%

2. main(int argc, char* argv[]) 是什么意思?

這是帶參數的 main 形式,用來接收命令行參數

  • argc(argument count):命令行參數的個數(包含程序名本身)

  • argv(argument vector):一個字符串數組,存放每個參數

示例

#include <iostream>
using namespace std;int main(int argc, char* argv[]) {cout << "參數個數: " << argc << endl;for (int i = 0; i < argc; i++) {cout << "argv[" << i << "] = " << argv[i] << endl;}return 0;
}

運行:

./my_program apple banana

輸出:

參數個數: 3
argv[0] = ./my_program
argv[1] = apple
argv[2] = banana

3. 為什么不用 cin 也能讀到數據?

????????這是因為 argc/argv 的數據是在程序啟動之前就由操作系統傳給你的,并不是在程序運行中輸入的

流程大致如下:

  1. 用戶在命令行輸入:./my_program apple banana

  2. 操作系統解析命令,把每個空格分隔的部分作為一個參數

  3. 把這些參數存到內存里

  4. 調用 main(argc, argv),把參數個數和參數地址直接傳進去

cin 是運行時從標準輸入讀取,需要用戶在程序執行過程中輸入

4. 怎么傳入命令行參數?

命令行方式

g++ main.cpp -o my_program
./my_program apple banana "hello world"

Visual Studio

  1. 右鍵項目 → 屬性

  2. 配置屬性 → 調試 → 命令參數 中填寫參數。

VS Code

.vscode/launch.json 中配置

{"version": "0.2.0","configurations": [{"name": "Run with args","type": "cppdbg","request": "launch","program": "${workspaceFolder}/my_program","args": ["apple", "banana", "hello world"],"cwd": "${workspaceFolder}"}]
}

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

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

相關文章

【oracle閃回查詢】記錄字段短時間被修改的記錄

SELECT versions_starttime, versions_endtime, versions_operation, versions_xid, [字段1], [字段2] – 替換為實際字段名 FROM 表名 VERSIONS BETWEEN TIMESTAMP SYSTIMESTAMP - INTERVAL ‘15’ MINUTE AND SYSTIMESTAMP --15分鐘內 WHERE id ‘目標ID’ – 指定記錄的唯…

【軟考中級網絡工程師】知識點之 IP 組播技術:從原理到實戰

目錄一、IP 組播技術概述1.1 什么是 IP 組播1.2 IP 組播與其他傳輸方式對比二、IP 組播地址詳解2.1 IPv4 組播地址范圍及分類2.2 特殊 IPv4 組播地址示例2.3 IPv6 組播地址結構與特點2.4 IP 組播地址與 MAC 地址的映射關系三、IP 組播協議剖析3.1 IGMP 協議深度解析3.2 PIM 協議…

Akamai Bot Manager智能防護體系解析:邊緣計算與AI驅動的反爬蟲技術

{ “title”: “Akamai Bot Manager智能防護體系解析&#xff1a;邊緣計算與AI驅動的反爬蟲技術”, “tags”: “Akamai,Bot Manager,邊緣計算,反爬蟲,CDN安全,機器學習,威脅檢測,網絡安全”, “description”: “深度剖析Akamai Bot Manager的邊緣計算架構、機器學習檢測引擎、…

IIS Express中可以同時加載并使用.net4.0和.NET 2.0的 DLL

<add name"HttpHandler" path"UploadHttpHandler.ashx" verb"*" type"ABC.HttpHandler, ABC"/> </handlers> 如果IIS EXPRESS是加載4.0的環境&#xff0c;可以加載.NET 2.0的DLL嗎&#xff1f;在 IIS Express 中&#xff…

STM32 ESP8266 WiFi模塊驅動

STM32 ESP8266 WiFi模塊驅動 1. 簡介 ESP8266是一款高度集成的WiFi芯片&#xff0c;可以為其他設備提供WiFi聯網功能。本筆記記錄了基于STM32 HAL庫的ESP8266驅動實現&#xff0c;包括硬件連接、初始化配置、AT指令交互等關鍵部分。 項目源碼倉庫&#xff1a;STM32_Sensor_D…

7 種最佳 DBAN 替代方案,徹底擦除硬盤數據

DBAN&#xff08;Darik 的 Boot and Nuke&#xff09;長期以來一直是安全擦除計算機數據的首選解決方案。然而&#xff0c;盡管 DBAN 廣受歡迎&#xff0c;但它也存在一些明顯的局限性&#xff0c;這些局限性隨著時間的推移變得越來越明顯。現在&#xff0c;本文將更詳細地探討…

【K8s】K8s控制器——Deamonset、Statefulset、Job與CronJob

1、Deamonset2、Statefulset3、Job與CronJob一次性作業與周期性作業#- 8.6 #cat > daemonset.yml <<EOF apiVersion: apps/v1 kind: DaemonSet metadata:name: test-demonsetlabels:daemonset: test spec:selector:matchLabels:name: testpodtemplate:metadata:labels…

基于柔性管控終端的新能源汽車充電站有序充電系統設計與實現

摘要&#xff1a;隨著新能源汽車的迅猛發展&#xff0c;充電基礎設施面臨著電力負荷激增、電網穩定性下降等挑戰。本文針對當前充電設施無序充電導致的電網壓力問題&#xff0c;提出了一種基于柔性管控終端的充電站有序充電系統解決方案。通過分析國內外有序充電技術發展現狀&a…

10-docker基于dockerfile自動制作鏡像

文章目錄一.為什么要學習自動構建鏡像1.為什么要學習自動化構建鏡像2.根據dockerfile自動構建鏡像的流程3.常用的dockerfile指令二.使用dockerfile構建nginx服務鏡像&#xff08;FR0M&#xff0c;RUN&#xff0c;CMD&#xff09;1.創建dockerfile的存儲路徑2.編寫dockerfile文件…

如何解決大模型API明明一分鐘內只發起了一次請求,卻觸發了 “Your account reached max request” 的錯誤

問題背景 在使用 OpenAI SDK 進行 API 調用時&#xff0c;你可能會遇到這樣的困惑&#xff1a;明明一分鐘內只發起了一次請求&#xff0c;卻觸發了 “Your account reached max request” 的錯誤。仔細排查之后發現&#xff0c;并不是 SDK 真正向服務端發送了超限的多次請求&a…

使用Spring Boot+Vue3開源的即時通訊 IM 系統

1. 產品概述V-IM 是一款基于 Electron 和 Vue 3 開發的跨平臺即時通訊客戶端&#xff0c;目前正在進行2025年版本的開發。該應用提供了豐富的即時通訊功能&#xff0c;支持個人聊天、群組聊天、文件傳輸等功能&#xff0c;適用于企業內部通訊或團隊協作場景。2. 核心功能2.1 用…

在Mac上搭建本地AI工作流:Dify與DeepSeek的完美結合

在Mac上搭建本地AI工作流&#xff1a;Dify與DeepSeek的完美結合 一、Dify平臺簡介 Dify是一個開源的大語言模型(LLM)應用開發平臺&#xff0c;旨在簡化和加速生成式AI應用的創建和部署。其名字蘊含著"Define&#xff08;定義&#xff09; Modify&#xff08;修改&#x…

centos出現ping: baidu.com: 未知的名稱或服務問題

出現的問題如下&#xff1a;自己電腦連接的是實驗室的無線網&#xff0c;宿主機可以上網&#xff0c;但是虛擬機無法ping通百度 解決&#xff1a; 將連接的網絡換成自己的手機熱點&#xff0c;然后就解決了。。。

GitHub第三方登錄全解析:OAuth 2.0流程詳解(適合初學者)

&#x1f510; GitHub第三方登錄全解析&#xff1a;OAuth 2.0流程詳解&#xff08;適合初學者&#xff09; &#x1f31f; 什么是OAuth&#xff1f;為什么需要它&#xff1f; 想象一下&#xff1a;你開發了一個學習筆記應用"DocFlow"&#xff0c;用戶需要登錄才能使用…

MyBatis持久層實現

MyBatis持久層實現 package com.example.usermanagement.mapper;import com.example.usermanagement.entity.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List;/*** 用戶Mapper接口* Mapper: 標識這是M…

BW處理鏈日志存儲分析與清理

處理鏈日志存儲分析使用程序 RSPC_LOGS_ANALYZE 分析處理鏈日志占用空間*&---------------------------------------------------------------------* *& Report RSPC_LOGS_ANALYZE *&---------------------------------------------------------------------* *&a…

mysql 簡單操作手冊

以下是一份 MySQL 日常操作速查手冊&#xff0c;包含啟動/停止服務、連接/退出客戶端、數據庫管理、用戶權限等常用命令&#xff0c;適用于 macOS&#xff08;Homebrew 安裝&#xff09;和 Linux 系統&#xff1a;一、服務管理 &#x1f6a6;操作命令&#xff08;Homebrew&…

HTML5 Web Workers 深度剖析:助力網頁性能飛速提升

在當今數字化時代&#xff0c;Web 應用的性能已成為決定用戶體驗和業務成功的關鍵因素。隨著 Web 應用的復雜性不斷增加&#xff0c;如何高效利用設備資源、提升網頁響應速度成為開發者面臨的重大挑戰。 HTML5 Web Workers 的誕生與意義 在傳統的網頁開發中&#xff0c;JavaScr…

調度系統部署架構是什么樣的呢?

簡單示例一個部署架構圖&#xff0c;如下所示&#xff1a;&#x1f4d8; 各組件說明&#xff1a;? 服務器端組件&#xff08;控制節點&#xff09;Slurm&#xff1a;slurmctld&#xff08;主控調度器&#xff09;&#xff0c;slurmdbd&#xff08;數據庫服務&#xff09;PBS P…

SQL 與 NoSQL 的核心區別

數據庫是存儲、管理和檢索數據的系統。根據數據模型和設計理念&#xff0c;可分為SQL 數據庫&#xff08;關系型數據庫&#xff09; 和NoSQL 數據庫&#xff08;非關系型數據庫&#xff09;。兩者的核心區別在于數據的組織方式、靈活性、事務支持和適用場景。&#x1f4a1;一、…