c++初階學習----入門(上)

? ? ? ? 大家好啊。最近學習了一點關于c++的知識。這不就迫不及待的來與大家分享了嘛。但我這也是現學現賣所以咧。有很多遺落甚至不對的地方希望大家可以在評論區里面指出來。這樣也可以增加大家對知識的鞏固。

c語言與c++的聯系

? ? ? ? 不知道大家看到c++會不會不由自主的聯想到C語言啊。畢竟都是編程語言而且都帶有一個c那么聯想到應該很正常吧。反正開始的時候我身邊的人是這樣的。每當有人說著c++。哦,那個人不是學c語言的嘛。應該會吧。但是我開始對c++一點都不知道啊。但是經過今天的學習。我知道了。c++與c語言確實有很大的聯系。

? ? ? ?更加準確的說C++是在C語言的基礎上發展而來的,它是完全兼容C語言的。大家還記得我們以前在vs里面創建項目的時候后綴打的是.c。當然寫c++的代碼vs還是適用的。只是后面我們創建c++項目的時候用的是.cpp了。

? ?? ?還有就是我們也可以在.cpp里面寫c語言的代碼。但是不能再.c里面寫c++的代碼。因為c++是在c語言的基礎上延伸發展的。也可以說c++是以c語言為基礎而衍生出來的更加先進的編程語言。?好了大家只是需要知道c++是以c語言為基礎發展的并且c++包含c語言就可以了。

第一個代碼

? ? ? ? 不知道大家是否還記得剛開始玩c語言的時候寫的第一個代碼是什么了。但是我覺得我當時寫的第一個代碼是關于printf的。然后對于c++的話我們這里也是實現關于printf的。大家可以看一下:

? ? ? ?大家發現了吧。這個代碼實現的效果與c語言中的printf是一樣的。并且除了前期準備啊。代碼量還像也差不多的。但是其中還有一些什么東西不理解啊。比如說什么std啊cout啊還有什么endl啊。大家別急。接下來我們就一一來講解。

命名空間

? ? ? ?對于c++的第一個正式知識點我們來講講命名空間namespace那命名空間的含義是啥咧。這個我們先來看看比較官方的解釋是個啥:在C/C++中,變量,函數和后?要學到的類都是?量存在的,這些變量、函數和類的名稱將都存在于全局作?域中,可能會導致很多沖突。使?命名空間的?的是對標識符的名稱進?本地化,以避免命名沖突或名字污染,namespace關鍵字的出現就是針對這種問題的。

? ? ? ?也就是說命名空間就是為了解決我們c語言中的名字重復。避免沖突。那么光講的話也不能讓大家理解,那么我們直接舉個例子:

? ? ? ? 大家看一下上面的兩個區別。一個報錯一個成功打印了。大家還記得rand的作用吧。rand是生成一個隨機數的。反正這也就表明嘛。這是庫函數,在c語言中如果出現這樣的話就不能實現效果,但是在c++里面我們只需要命名一下空間那么就變的合理了。這下子大家知道namespace的作用了吧。

? ? ? ? 并且大家也看到了namespace的用法就是namespace+名字。然后{}。在括號里面可以寫可以定義變量/函數/類型等。就是說出來上面這個以外還可以定義一個變量以外還可以定義結構體,函數這些。

? ? ? ? ?只要定義好了之后就可以正常使用了。?并且還可以嵌套命名空間就是一個命名空間里面還可以寫其他的命名空間。

? ? ? ? 大家應該發現了吧。我在使用命名空間的時候再打印的時候是寫的yh::rand。這就是使用命名空間的最基本的指定命名空間訪問,大家可以理解為yh->rand。這是我們后面使用最常見且為最穩妥的一個用法了。還有一個用法就是using將命名空間中某個成員展開。什么意思咧。以上面這張圖片來說就是將命名空間中的其中一些指定的成員,比如說經常使用的,免得每次都要指定。那么具體是什么樣子的咧:

? ? ? ?這里我們只放開了yh空間中的a。所以我們在使用的時候,只有a可以不在特定的引用了。其他的還是需要特定引用。?那既然有指定開,或者或是半開,那么有沒有全開咧。嘿,可還真有。展開命名空間中全部成員 。含義顯而易見吧,就是把整個 命名空間全部展開。這樣就不需要大家特定指引了。但是這雖然看起來要號一些。但是項?不推薦,沖突?險很?。因為你本來就是為了防止命名沖突的,你這又全部展開了。豈不是沒干了。但我們寫代碼較少的話也可以用,畢竟少嘛。風險也較小。但后面上班了。寫項目了還是盡量或者別用:

? ? ? 大家也看到這里就了解了命名空間如何創建以及命名空間的三種用法了吧。

輸入與輸出

? ? ? ?當我們學習了namespace后,我們就來聊聊代碼中的第二個新知識點cout。大家可以稍微看一下下面的解釋。

? <iostream> 是 Input Output Stream 的縮寫,是標準的輸?、輸出流庫,定義了標準的輸?、輸
出對象。相等于輸入與輸出的頭文件。
? std::cin 是 istream 類的對象,它主要?向窄字符(narrow characters (of type char))的標準輸
?流。
? std::cout 是 ostream 類的對象,它主要?向窄字符的標準輸出流。相當于我們的控制面板
? std::endl 是?個函數,流插?輸出時,相當于插??個換?字符加刷新緩沖區。相當于我們的換行“\n”
? <<是流插?運算符,>>是流提取運算符。(C語?還?這兩個運算符做位運算左移/右移)
? ? ? ?而且 cout/cin/endl等都屬于C++標準庫,C++標準庫都放在?個叫std(standard)的命名空間中,所以要 通過命名空間的使??式去?他們。

? ? ? ?我們前面說過c++是c語言的發展。那么接下里我們要講一個爽點。我們都還記得我們c語言輸入與輸出變量的話都需要確定我們輸入與輸出的類型。但是大家看我的那個代碼,輸出的時候我并沒用寫類型啊。是不是,這就是c++與c語言相比的一個爽點。

還有就是大家可以在io需求?較?的地?,如部分?量輸?的競賽題中,加上以下3?代碼可以提?C++IO效率 。ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);反正就是沒寫對我們現在是無差的。但是寫了還是有意的。我們只管寫進可以了。

缺省參數

? ? ? ? 什么叫缺省參數啊。沒怎么聽過啊。那么缺省參數就是聲明或定義函數時為函數的參數指定?個缺省值。在調?該函數時,如果沒有指定實參 則采?該形參的缺省值,否則使?指定的實參,缺省參數分為全缺省和半缺省參數。(有些地?把缺省參數也叫默認參數)

? ? ? ?并且在c++中缺省參數分為半缺與全缺。名字顯而易見,全缺就是沒有指定實參。半缺就是有一部分確定了實參。

? ? ? ?C++規定半缺省參數必須從右往左依次連續缺省,不能間隔跳躍給缺省值。帶缺省參數的函數調?,C++規定必須從左到右依次給實參,不能跳躍給實參。函數聲明和定義分離時,缺省參數不能在函數聲明和定義中同時出現,規定必須函數聲明給缺省值。

? ? ? ?就是說缺省參數定義的話只能從右向左缺。就是右邊開始沒有。調用的話就是翻過來的。然后聲明必須確定缺省值。那么上面是什么意思咧。我們來講講。

? ? ? ? 我們可以看看我們上面寫的這個代碼。第一個Func我們就沒傳參數啊。我在引用的時候寫了a與b的值。這就是我們在沒有傳參的時候使用默認的參數。并且這個還是一個全缺省參數。怎么看的咧。什么看我們在引用的時候是不是直接都賦了值的。也就是說就算我們在調用的時候沒有傳參,c++還是加油用默認參數給出一個答案。

? ? ? ? ?接下來就是半缺,我們講過,我們在寫的時候從右向左。調用的時候從左向右。我們如果是半缺的話就不能像全缺那樣,一個都不寫。比如說:

? ? ? ? 我們可以看到半缺的時候我們如果一個沒寫,系統是會提醒的。這就表明我們半缺你要保證我們使用的式子每一個都有參數。那個缺了就補那個。并且不能跳躍。這也是系統不允許的。我們至少要保證完成這個樣子。?

? ? ? ? 對于缺省參數我們還有一個知識點就是缺省參數不能聲明和定義同時給。什么意思咧。大家看一下下面的這個照片就知道了?。

總結

? ? ? 好的,上面就是c++的初階學習的上篇了,然后我們接下來還會有一個下篇。這里我們主要先交代一些讓大家消化一下,畢竟剛從c語言轉到c++的話,可能還會有一點不理解,所以先給大家一點時間看一下,消化一下。這里只是開胃菜,然后大家還是需要把這些記住,因為后面對于c加加的學習和使用的話會用的比較多。?

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

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

相關文章

手機自帶錄屏在哪?6個軟件教你快速進行手機錄屏

手機自帶錄屏在哪&#xff1f;6個軟件教你快速進行手機錄屏 手機自帶的錄屏功能可以讓你輕松錄制屏幕上的內容&#xff0c;記錄游戲過程、制作教程或捕捉其他重要時刻。不同品牌的手機可能在不同位置提供錄屏功能。以下是一些常見的手機品牌及其錄屏功能位置&#xff0c;以及一…

【康復學習--LeetCode每日一題】724. 尋找數組的中心下標

題目&#xff1a; 給你一個整數數組 nums &#xff0c;請計算數組的 中心下標 。 數組 中心下標 是數組的一個下標&#xff0c;其左側所有元素相加的和等于右側所有元素相加的和。 如果中心下標位于數組最左端&#xff0c;那么左側數之和視為 0 &#xff0c;因為在下標的左側不…

運動愛好者的新選擇:哈氪聆光氣傳導耳機,輕巧又安全

平時不管是漫步街頭、騎行穿梭&#xff0c;還是乘坐公共交通時&#xff0c;我總是喜歡佩戴耳機&#xff0c;借此隔絕外部的喧囂&#xff0c;享受音樂的樂趣。在戶外使用耳機&#xff0c;我更傾向于選擇氣傳導耳機&#xff0c;它們更符合我的需求&#xff0c;因為這種耳機能讓我…

優雅下線的藝術:Eureka服務管理深度解析

優雅下線的藝術&#xff1a;Eureka服務管理深度解析 引言 在微服務架構中&#xff0c;服務的動態注冊與發現是保證系統高可用性的關鍵。Eureka作為Netflix開源的服務發現框架&#xff0c;提供了服務注冊與發現的基本功能。然而&#xff0c;服務在下線時如何做到"優雅&qu…

每日一編程,早點拿offer

計算字符串最后一個單詞的長度&#xff0c;單詞以空格隔開 輸入描述&#xff1a; 輸入一行&#xff0c;代表要計算的字符串&#xff0c;非空 輸出描述&#xff1a; 輸出一個整數&#xff0c;表示輸入字符串最后一個單詞的長度。 輸入&#xff1a;hello world輸出&#xff1a…

kubernetes集群證書過期問題解決

kubernetes集群證書過期問題解決 問題描述檢查證書是否過期更新證書master節點操作node節點操作 問題描述 K8S 各個組件需要與 api-server 進行通信&#xff0c;通信使用的證書都存放在 /etc/kubernetes/pki 路徑下&#xff0c;kubeadm 生成的證書大部分默認有效期為 1 年&…

SECS/GEM快速完成半導體設備通訊

金南瓜幫助國內大量從事半導體前道設備開發研制、生產的設備廠商&#xff0c;通過快速提供穩定可靠的SECS/GEM、GEM300產品&#xff0c;為客戶在激光退火、濕法設備&#xff08;清洗、鍍膜等&#xff09;、離子注入、MOCVD、PVD等客戶專注于核心工藝提升&#xff0c;提升企業的…

`CyclicBarrier` 是 Java 中的一個同步輔助工具類,它允許一組線程相互等待,直到所有線程都達到了某個公共屏障點(barrier point)

CyclicBarrier 是 Java 中的一個同步輔助工具類&#xff0c;它允許一組線程相互等待&#xff0c;直到所有線程都達到了某個公共屏障點&#xff08;barrier point&#xff09;。當所有線程都到達屏障點時&#xff0c;它們可以繼續執行后續操作。CyclicBarrier 的特點是可以重復使…

中介子方程五十

XXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXaXnXaXXαXLXyXXWXuXeXKXXiXyXΣXXΣXXVXuXhXXWXηXXiXhXXpXXhXiXXηXWXXhXuXVXXΣXXΣXyXiXXKXeXuXWXXyXLXαXXaXnXaXXFXXuXXWXXuXXdXXrXXαXXuXpX…

Gen4Gen:多概念個性化圖像生成的數據驅動革新

個性化文本到圖像生成模型在用戶控制生成過程方面取得了重要進展。這些模型能夠通過少量訓練樣本學習并合成包含新穎個性化概念的圖像&#xff0c;例如用戶的寵物或特定物品。然而&#xff0c;現有技術在處理多概念個性化時存在局限性&#xff0c;尤其是在生成包含多個相似概念…

連接與隔離:Facebook在全球化背景下的影響力

在當今全球化的背景下&#xff0c;Facebook作為全球最大的社交網絡平臺&#xff0c;不僅連接了世界各地的人們&#xff0c;還在全球社會、經濟和文化中發揮著深遠的影響。本文將深入探討Facebook在全球化進程中的作用&#xff0c;以及其對個體和社會之間連接與隔離的雙重影響。…

【續集】Java之父的退休之旅:從軟件殿堂到多彩人生的探索

Java之父的退休之旅&#xff1a;從軟件殿堂到多彩人生的探索-CSDN博客 四、科技領袖退休后的行業影響 4.1 傳承與啟迪 Gosling等科技領袖的退休&#xff0c;為行業內部年輕一代提供了更多的發展機會和成長空間。他們的退休不僅意味著權力和責任的交接&#xff0c;更是一種精…

等保測評新趨勢:應對數字化轉型中的安全挑戰

隨著信息技術的飛速發展&#xff0c;數字化轉型已成為企業提升競爭力、優化運營效率的重要手段。然而&#xff0c;這一轉型過程中&#xff0c;企業也面臨著前所未有的安全挑戰。等保測評&#xff08;信息安全等級保護測評&#xff09;作為保障信息系統安全的重要手段&#xff0…

html5路由如何在nginx上部署(vite+vue3)

我們知道前端常用的有Hash 模式和html5模式的路由&#xff0c;hash模式在nginx上部署不需要額外的操作&#xff0c;而html5模式則需要額外設置&#xff0c;這里介紹下如何在nginx根地址&#xff08;location / {}&#xff09;下部署和在非根地址上&#xff08;location /admin{…

【MATLAB源碼-第232期】基于matlab的 (204,188) RS編碼解碼仿真,采用QPSK調制輸出誤碼率曲線。

操作環境&#xff1a; MATLAB 2022a 1、算法描述 Reed-Solomon碼&#xff08;RS碼&#xff09;是一類廣泛應用于數字通信和存儲系統中的糾錯碼&#xff0c;尤其在光盤、衛星通信和QR碼等領域有著重要作用。RS碼是一種非二進制的糾刪碼&#xff0c;由Irving S. Reed和Gustave…

當CNN遇上Mamba,高性能與高效率通通拿下!

傳統視覺模型在處理大規模或高分辨率圖像時存在一定限制&#xff0c;為解決這個問題&#xff0c;研究者們就最近依舊火熱的Mamba&#xff0c;提出了Mamba結合CNN的策略。 這種結合可以讓Mamba在處理長序列數據時既能夠捕捉到序列中的時間依賴關系&#xff0c;又能夠利用CNN的局…

思維+并查集,1670C - Where is the Pizza?

一、題目 1、題目描述 2、輸入輸出 2.1輸入 2.2輸出 3、原題鏈接 1670C - Where is the Pizza? 二、解題報告 1、思路分析 考慮兩個數組a&#xff0c;b的每個位置只能從a&#xff0c;b中挑一個 不妨記posa[x]為x在a中位置&#xff0c;posb同理 我們假如位置i挑選a[i]&a…

【JS+H5+CSS實現煙花特效】

話不多說直接上代碼 注意:背景圖路徑是picture/star.jpg&#xff0c;自己在同級目錄先創鍵picture目錄再下載一張圖片命名為star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…

【LLM】三、open-webui+ollama搭建自己的聊天機器人

系列文章目錄 往期文章回顧&#xff1a; 【LLM】二、python調用本地的ollama部署的大模型 【LLM】一、利用ollama本地部署大模型 目錄 前言 一、open-webui是什么 二、安裝 1.docker安裝 2.源碼安裝 三、使用 四、問題匯總 總結 前言 前面的文章&#xff0c;我們已經…

探索Qt的QVariant:靈活的數據交換機制

&#x1f60e; 作者介紹&#xff1a;歡迎來到我的主頁&#x1f448;&#xff0c;我是程序員行者孫&#xff0c;一個熱愛分享技術的制能工人。計算機本碩&#xff0c;人工制能研究生。公眾號&#xff1a;AI Sun&#xff08;領取大廠面經等資料&#xff09;&#xff0c;歡迎加我的…