C++Primer學習筆記:第1章 開始

本博客為閱讀《C++ Primer》(第5版)的讀書筆記

ps:剛開始的時候我將所有的筆記都放在一篇博客中,等看到第六章的時候發現實在是太多了,導致我自己都不想看,為了日后回顧(不那么有心理壓力),我將筆記拆分為一章一章的。

  • 在大多數系統中,main的返回值被用來指示狀態。返回值0表示成功,非0的返回值的含義由系統定義,通常用來指出錯誤類型。在Unix中程序運行以后返回值保存在$?中(必須在剛運行后打印輸出)
  • 編譯時可能需要加上-std=c++11打開對C++11標準的支持,一般會加上-Wall參數,可以對有問題的程序結構發出警告
  • 如果想要通過打印語句進行調試,一定要及時使用endl操縱符刷新流,否則如果程序崩潰,可能無法得到輸出信息,從而導致關于程序崩潰位置的錯誤推斷
  • 標準庫定義的所有名字都在命名空間std中
  • /**/之間不能包含*/,可以包含/*//
  • 當我們使用一個istream對象作為條件時,其效果是檢測流的狀態。如果流是有效的(未遇到錯誤)檢測成功,當遇到文件結束符(end-of-file),或遇到一個無效輸入時,istream對象的狀態會變為無效,返回假
  • Unix系統中,文件結束符為Ctrl+D
  • 按照編譯錯誤報告的順序來逐個修正錯誤,因為錯誤經常有傳遞效應,后面的錯誤經常是由前面的錯誤引起的。在每修改一個(或一小部分)明顯的錯誤后就重新編譯
  • cin進行循環讀入的格式為while(cin>>x)。但是如果用Ctrl+C中斷讀入會導致cin失效
  • cinscanf的輸入速率進行了測試,一般情況下cinscanf慢許多,在讀入規模在1e6規模就會有明顯的差距。但是可以用ios::sync_with_stdio(false);加速流,這樣會關閉和stdio的同步,在網上查了一下,這就要求我們在混用coutprintf的時候都要及時清空緩沖區(輸出endl或者\n),問題不大。在加速流以后,cinscanf的效率差不多,在1e8數量級的時候cin的效率超過了printf(實測)
  • 注意判等運算符為==,為了避免寫成=出錯,一個良好的編程習慣是常量 == 變量,這樣如果我們寫錯了就會報錯
  • 標準頭文件一般不加后綴,包含來自標準庫的頭文件時,應該使用<>包圍頭文件,對于不屬于標準庫的頭文件,則用""包圍
  • 為了使用一個類,我們不必關心它是如何實現的,只需要知道類對象可以執行什么操作
  • 點運算符.的運算結果是右側運算對象指定的成員,調用運算符()里面放置參數列表。
  • 緩沖區是一個存儲區域,用于保存數據。IO設施通常將輸入(輸出)數據保存在一個緩沖區中,讀寫緩沖區的動作與程序中的動作是無關的。我們可以顯式地刷新緩沖區,以便強制將緩沖區中的數據寫入輸出設備。默認情況下,讀cin會刷新cout,程序非正常終止也會刷新cout
  • 類類型的變量如果未指定初值,則按類定義指定的方式進行初始化。定義在函數內部的內置類型變量默認是不初始化的,除非有顯式的初始化語句

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

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

相關文章

【ubuntu】ubuntu14.04上安裝搜狗輸入法

** 在ubuntu14.04.4 desktop 64amd版本上安裝sogou輸入法 ** 0.換安裝源為中國源&#xff08;可選&#xff0c;下載會快些&#xff09; 1.搭fcitx環境 2.安裝sogou for linux 詳細步驟&#xff1a; 因為sogou中文輸入法基于fcitx(Free Chinese Input Toy for X),需要先搭環境…

【ubuntu】ubuntu下用make編譯程序報錯找不到openssl/conf.h

ubuntu下用make編譯程序報錯找不到openssl/conf.h 安裝libssl-dev:i386&#xff0c;sudo apt-get install libssl-dev:i386 看好版本&#xff0c;如果不加i386默認下載的是32位&#xff0c;用ln命令連接過去也還是用不了的!libssl.dev安裝好后&#xff0c;用find / -name libs…

【ubuntu】ubuntu如何改變系統用戶名

ubuntu如何改變系統用戶名 方法1&#xff1a;修改現有用戶名 方法2&#xff1a;創建新用戶&#xff0c;刪掉舊用戶 方法1&#xff1a; * *—&#xff01;&#xff01;&#xff01;有博客說要先改密碼&#xff0c;再改用戶名&#xff0c;否則會出現無法登陸狀況&#xff01;&…

什么是signal(SIGCHLD, SIG_IGN)函數

什么是signal(SIGCHLD, SIG_IGN)函數 在進行網絡編程時候遇到這個函數的使用&#xff0c;自己學習結果如下&#xff0c;有不對請幫忙指正:) signal(SIGCHLD, SIG_IGN)打開manpage康一康~ sighandler_t signal ( int signum, sighandler_t handler );參數1 int signum: 就是…

ssh連接不上linux虛擬機

ssh連接不上linux虛擬機 1.開啟ssh服務 linux虛擬機下命令行輸入&#xff1a; start service ssh如果顯示沒有ssh&#xff0c;就下面兩個試一試哪一個ok&#xff0c;安裝一下ssh&#xff1a; sudo apt-get install openssh-server sudo apt-get install sshd2.還有人說可能是…

沒寫client,想先測試server端怎么辦?

沒寫client&#xff0c;想先測試server端怎么辦&#xff1f; 辦法&#xff1a; 1.先打開終端./server&#xff0c;運行起來server 2.再開一個終端&#xff0c; 輸入nc 127.0.0.1 8888 回車&#xff08;這里port號要和server里邊設置的一致&#xff0c;127.0.0.1是和本機的測試…

【報錯解決】linux網絡編程報錯storage size of ‘serv_addr’ isn’t known解決辦法

linux網絡編程報錯storage size of ‘serv_addr’ isn’t known解決辦法 報錯如下&#xff1a; server.c:18:21: error: storage size of ‘serv_addr’ isn’t known struct sockaddr_in serv_addr, clit_addr; ^server.c:18:32: error: storage size of ‘clit_addr’ isn’…

【c】寫頭文件要加#ifndef,#define, #endif

頭文件首位 編寫.h時&#xff0c; 最好加上如下&#xff0c;用來防止重復包含頭文件&#xff1a; 例如&#xff1a; 要編寫頭文件test.h 在頭文件開頭寫上兩行&#xff1a;#ifndef _TEST_H#define _TEST_H// 文件名的大寫#endif頭文件結尾寫上一行&#xff1a;#endif這樣做是為…

【c】【報錯解決】incompatible implicit declaration

【報錯解決】incompatible implicit declaration 背景; 1.自己封裝的函數wrap.c包含&#xff1a; #include "wrap.h"2.主函數調用如下&#xff1a; #include <stdio.h> #include <stdlib.h> ... #include <errno.h> #include "wrap.h"…

【ubuntu】vim語法高亮設置無效

如果你的.vimrc配置了語法高亮&#xff0c;但是你的vim沒實現&#xff0c;可能你的vim是vim-tiny的黑白版本&#xff0c;你需要vim-gnome這個帶GUI的彩色版本。 apt-get update apt-get upgrade apt-get install vim-gnome reboot打開vi就能看到彩色啦

__attribute__機制介紹

1. __attribute__ GNU C的一大特色&#xff08;卻不被初學者所知&#xff09;就是__attribute__機制。 __attribute__可以設置函數屬性(Function Attribute)、變量屬性(Variable Attribute)和類型屬性(Type Attribute) __attribute__前后都有兩個下劃線&#xff0c;并且后面會緊…

【git】git基本操作命令

1.建立本地倉庫 git config --global user.name "lora" git config --global user.email "xxxgmail.com"2.建立目錄 mkdir xxx3.初始化 cd xxx //進入目錄 git init //初始化4.將代碼上傳至本地緩存區 git add . //上傳全部 git add 文件名 //…

【git】解決gitlab ip更改問題

有時候因為部署gitlab虛擬機的ip發生變化&#xff0c;gitlab的clone地址沒有同時更新到新的ip&#xff0c; 這導致后續clone報錯&#xff0c;解決辦法如下&#xff1a; 進入部署gitlab的主機&#xff1a; sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.…

gcc -l參數和-L參數

-l參數就是用來指定程序要鏈接的庫&#xff0c;-l參數緊接著就是庫名&#xff0c;那么庫名跟真正的庫文件名有什么關系呢&#xff1f;就拿數學庫來說&#xff0c;他的庫名是m&#xff0c;他的庫文件名是libm.so&#xff0c;很容易看出&#xff0c;把庫文件名的頭lib和尾.so去掉…

【jenkins】jenkins CI/CD搭建基本過程

1.安裝 &#xff08;1&#xff09;安裝java &#xff08;2&#xff09;安裝jenkins &#xff08;3&#xff09;修改jenkins用戶名密碼配置 &#xff08;4&#xff09;啟動jenkins 2. 插件安裝換源 &#xff08;1&#xff09;插件高級選項換地址 &#xff08;2&#xff09;修改…

apt-get常用命令

一&#xff0c;什么的是apt-get 高級包裝工具&#xff08;英語&#xff1a;Advanced Packaging Tools,簡稱&#xff1a;APT&#xff09;是Debian及其衍生發行版&#xff08;如&#xff1a;ubuntu&#xff09;的軟件包管理器。APT可以自動下載&#xff0c;配置&#xff0c;安裝二…

【jenkins】jenkins build項目的三種方式

jenkins致力于CI/CD&#xff0c; 更改代碼只需要在gitlab push之后&#xff0c;jenkins重新build便可以在tomcat上實現更新部署。 以下為三種構建方式&#xff1a; 1.freestyle project 0. 安裝插件Deploy to container, 并安裝憑證 github連接創建item設置build和post-build …

apt-get 使用詳解

[舉例] 目前常用的 *更新本機中的數據庫緩存&#xff1a; sudo apt-get update *查找包含部分關鍵字的軟件包&#xff1a; sudo apt-cache search <你要查找的name> *安裝指定的軟件&#xff1a; sudo apt-get install <你要安裝的軟件包> *下載軟件包源代碼&…

Buildroot用戶指南

第一章 關于Buildroot Buildroot是一個包含Makefile和修補程序【patch】的集合&#xff0c;這個集合可以使你很容易的為你的目標構建交叉工具鏈【cross-compilationtoolchain】&#xff0c;根文件系統【root filesystem】以及Linux內核映像【kernelimage】。Buildroot可…

【jenkins】jenkins按分支build和email

jenkins按分支build git上傳分支到遠程jenkins打開參數設置更改SCM pipeline代碼&#xff0c;加入branch讀取項 build完發送email 1.安裝插件email extension templates 2.開通發件郵箱smtp服務&#xff0c;配置發件郵箱jenkins&#xff0c;發送測試郵件 3. 項目根目錄添加em…