[C++]筆記 - 知識點積累

一.運算符的優先級

一共15個級別

  • 最高優先級 : () []
  • 最低優先級 :逗號表達式
  • 倒數第二低優先級 : 賦值和符合賦值(=,==,-=...)
  • ?! >算術運算符 > 關系運算符 > && >> || >賦值運算符

二.數據類型轉換

  • ?隱式類型轉換
    • 算數轉換
      • char int long longlong float double
      • 盡量不丟失精度,會將計算結果往精度大的類型轉換
      • 例如 : 15 + 3.14? ? =>? ?15.0? +3.14
    • 賦值轉換
      • int x = 3.14*10.0;
      • 轉換為int類型時候,因為賦值符號的左邊變量為int,則將類型轉換為int類型
      • 結果為 31
    • 輸出轉換(C語言)
      • printf("%c",255+50);?
      • 305的二進制數是 0000 0001 0011 0001,由于超過了一個字節所能存儲的最大數,,所以會將0000 0001擠到第二個字節里面去,該字節就存放0011 0001,十進制為49,即ASCLL碼為49,轉換為字符為 ' 1 '
      • 若按%d 進行輸出,則輸出為305,因為int占四個字節,足夠容納305的二進制
  • 強制類型轉換
    • c語言 (數據類型)數據? ?(int)3.14
    • c++語言? ?數據類型(數據) int(3.14)
    • x? = (char)257 + 100;
    • 257為int類型,其二進制為 1 0000 0001,轉換成char類型會將保留8位,結果位0000 0001,這樣結果在和int類型的100相加,等于 1+ 100? = 101
  • 高級強制類型轉換
  • static_cast
  • dynamic_cast
  • reinterpert_cast

三.switch和if的選擇

  • switch : 用于 int char long longlong類型的變量,和多個特定常量的判斷處理
    • float和都變了類型不可以
  • if適用于各種邏輯判斷
  • switch一定能改為if,if不一定能改為switch

四.const int*p與int*?const p 的區別

????????

int i  =0;
int t = 2;
const int *p = &i;//可以改變p的指向,但是不能通過*p改變指向變量的值
int* const p1 = &i;//可以通過*p改變指向變量的值,但是不能在指向其他變量了
//*p = 3;//error
//p = &t;//pass
//*p1 =3;//pass
//p1 = &t;error
  • 常量指針可以指向常量或變量,不能將常量指針賦值給普通指針

五.底層Const和頂層Const的區別

  • 底層const用于修飾指針或引用目標對象,表示目標對象是常量,不可修改。
  • 頂層const用于修飾指針或引用本身,表示指針或引用本身是常量,無法指向其他對象。
  • 頂層const,指針本身是常量

六.不安全函數

  • scanf_s函數
int x;
scanf_s("%d",&x);//不需要使用第三個參數,用法和scanf相同float f;
scanf_s("%f",&f);//不需要使用第三個參數,用法和scanf相同char c;
scanf_s("%c",&c,sizeof(c));//需要使用第三個參數,否則有警告char name[16];
scnaf_s("%s",name,sizeof(name));//需要使用第三個參數int age;
char name[16];
scanf_s("%d%s",&age,name,sizeof(name));
  • gets函數不能使用
    • 使用gets_s,gets函數是老標準C語言函數,vs使用更安全的C11標準,使用對應的gets_s
char line[32];
gets_s(line,sizeof(line));

?六.cin>> 返回值

  • if((cin>>word) == 0){}//在vs里面不能通過編譯
    • 解決方法
if(!(cin>>word)){}//方法1if((bool)(cin>>word) == 0){}//方法2

七.getline返回值是cin

  • 返回值是cin
getline(cin, word) >> count;

if(getline(cin,line)==0){}//錯誤,不能通過編譯
  • 解決方案和上面cin的解決方法一樣,可以強制轉換類型或者加上邏輯非

八.計算機英語加油站

  • bool 布爾 邏輯類型
  • if? ? ? ? ?如果
  • else? ? ?否則
  • switch??開關
  • case? ? ?情況
  • default? ?默認
  • commit? 提交
  • clone? ? ?克隆? ?復制

九.goto語句

  • 例子 :
string ret;
for(int i = 0;i<5;i++){cout<<"開始第"<<i+1<<"次相親..."<<endl;cout<<"你喜歡打王者嗎?"<<endl;cin>>ret;if(ret != "yes") continue;else{cout<<"我中意你,你中意我嗎?"<<endl;cin>>ret;if(ret == "yes"){goto happy;}}
}
happy :cout<<"幸福生活"<<endl;cout<<"開啟幸福之旅"<<endl;return 0;
}
  • goto在應用開發中不建議用,會破壞程序的結構性,一般用在底層開發,追求效率
  • 語法 :goto 標志;? ? 標志:
  • goto在應用開發中一般將標志后面的語句封裝為函數,進行函數調用 ; 或者用flag進行標記,標記成立執行標志后的代碼
  • 標簽必須和goto 標志;必須放在同一個函數內,不能跨函數,但是可以在同一個函數的任何位置

十.cmd

  • 切換盤 直接 d:或者c:
  • 進入某個文件,用cd 例如 cd d:\ceshi,就會進入d盤下的ceshi目錄
  • 查看編碼用chcp(活動碼)
  • 修改編碼用: chcp? 編碼? ,例如 chcp? 936,會改為936編碼
  • 在一個目錄下放兩個exe文件,利用破解.exe | 客戶.exe,會將前面程序的輸出數據,通過管道作為后面文件的輸入數據
  • 利用dir查看目錄下面的文件

十一.VS播放音樂

  • 頭文件?
#include<mmsystem.h>
#prama comment(lib,"winmm.lib")
  • 加載音樂代碼
mciSendString(_T("play 音樂地址 repeat"),0,0,0);
  • _T可以用多字符集替代
  • play 播放
  • repeat 重復

十二.寬度與對其

  • c++中的設置文本寬度頭文件為#include<iomanip>,語句為setw(寬度)
  • 設置對其 : 例如左對齊 std::left

十三.原地交換字符串

  • 當left = right時,沒有必要再交換,也可也用于交換其他數據類型
    string str;int left,right;cout<<"輸入一個字符串: ";cin>>str;left = 0;right = str.length()-1;while (left<right){char tmp = str[left];str[left] = str[right];str[right] = tmp;left++;right--;}cout<<str<<endl;

十四.終端

  • 控制終端大小
  • mode con cols = 列數,lines =行數

  • system("任何終端命令");,再system里面可以寫任何終端命令進行執行
  • 例如 : system("mode con cols=40 lines=15");

十五.string轉char*類型

  • 函數c_str()函數可以將string類型轉換為從const char*類型
using namespace std;
void print(const char * str){cout<<str;
}
int main() {string str = "LiHua";const char* p = str.c_str();//const,char*類型print(str);//這樣會報錯,形參與實參的類型不匹配print(str.c_str());//不會報錯,將string 轉成const char*
}

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

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

相關文章

解決Java中的“Unchecked cast: java.lang.Object to java.util.List”問題

&#x1f337;&#x1f341; 博主貓頭虎 帶您 Go to New World.?&#x1f341; &#x1f984; 博客首頁——貓頭虎的博客&#x1f390; &#x1f433;《面試題大全專欄》 文章圖文并茂&#x1f995;生動形象&#x1f996;簡單易學&#xff01;歡迎大家來踩踩~&#x1f33a; &a…

搜索二叉樹

目錄 搜索二叉樹的性質 搜索二叉樹的實現、 插入 刪除 代碼 在以前我們學過二叉樹,但是在對二叉樹的學習中發現,似乎二叉樹并沒有什么作用,要論增刪它比不上鏈表,論隨機訪問也沒法和順序表比,對于當時的我們是一頭霧水,那么現在它的功能終于是體現出來了,這里就是我們要講的…

[Go版]算法通關村第十一關白銀——位運算的高頻算法題

目錄 專題1&#xff1a;位移的妙用題目&#xff1a;位1的個數&#xff08;也被稱為漢明重量&#xff09;解法1&#xff1a;遍歷所有位&#xff0c;判斷每個位的數字是否是1Go代碼 解法2&#xff1a;依次消除每個1的位 numnum&(num-1)Go代碼 題目&#xff1a;比特位計數思路…

Mac 卸載appium

安裝了最新版的appium 2.0.1,使用中各種問題&#xff0c;卡頓....,最終決定回退的。記錄下卸載的過程 1.打開終端應用程序 2.卸載全局安裝的 Appium 運行以下命令以卸載全局安裝的 Appium&#xff1a; npm uninstall -g appium 出現報錯&#xff1a;Error: EACCES: permiss…

云安全攻防(十二)之 手動搭建 K8S 環境搭建

手動搭建 K8S 環境搭建 首先前期我們準備好三臺 Centos7 機器&#xff0c;配置如下&#xff1a; 主機名IP系統版本k8s-master192.168.41.141Centos7k8s-node1192.168.41.142Centos7k8s-node2192.168.41.143Centos7 前期準備 首先在三臺機器上都執行如下的命令 # 關閉防火墻…

Python讀取Word統計詞頻輸出到Excel

1.安裝依賴的包 "# 讀取docx\n", "!pip install python-docx\n", "!pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-docx\n", "# 中英文分詞\n", "!pip install jieba\n", "!pi…

postman測試后端增刪改查

目錄 一、本文介紹 二、準備工作 &#xff08;一&#xff09;新建測試 &#xff08;二&#xff09;默認url路徑查看方法 三、增刪改查 &#xff08;一&#xff09;查詢全部 &#xff08;二&#xff09;增加數據 &#xff08;三&#xff09;刪除數據 &#xff08;四&…

nginx反向代理流程

一、nginx反向代理流程 反向代理&#xff1a;使用代理服務器來接受internet上的連接請求&#xff0c;然后將請求轉發給內部網絡中的上游服務器&#xff0c;并將上游服務器得到的結果返回給請求連接的客戶端&#xff0c;代理服務器對外表現就是一個web服務器。Nginx就經常拿來做…

【內網穿透】如何實現在外web瀏覽器遠程訪問jupyter notebook服務器

文章目錄 前言1. Python環境安裝2. Jupyter 安裝3. 啟動Jupyter Notebook4. 遠程訪問4.1 安裝配置cpolar內網穿透4.2 創建隧道映射本地端口 5. 固定公網地址 前言 Jupyter Notebook&#xff0c;它是一個交互式的數據科學和計算環境&#xff0c;支持多種編程語言&#xff0c;如…

信也科技一面涼經

1.在項目經歷里挑一個詳細介紹一下 項目的應用場景 2.項目里用到多線程是怎么用的&#xff1f;回答&#xff1a;線程池 用通過 ThreadPoolExecutor 構造函數的方式創建的線程池 3.線程池有哪些重要參數&#xff1f;回答&#xff1a;核心線程數、最大線程數、阻塞隊列類型、…

【愛書不愛輸的程序猿】公網訪問本地搭建的WEB服務器之詳細教程

歡迎來到愛書不愛輸的程序猿的博客, 本博客致力于知識分享&#xff0c;與更多的人進行學習交流 本地電腦搭建Web服務器并用cpolar發布至公網訪問 前言1. 首先將PHPStudy、WordPress、cpolar下載到電腦2. 安裝PHPStudy3. 安裝cpolar&#xff0c;進入Web-UI界面4.安裝wordpress5.…

KU Leuven TU Berlin 推出“RobBERT”,一款荷蘭索塔 BERT

荷蘭語是大約24萬人的第一語言&#xff0c;也是近5萬人的第二語言&#xff0c;是繼英語和德語之后第三大日耳曼語言。來自比利時魯汶大學和柏林工業大學的一組研究人員最近推出了基于荷蘭RoBERTa的語言模型RobBERT。 谷歌的BERT&#xff08;來自Transformers的B idirectional …

C語言 常用工具型API --------system()

函數名&#xff1a; system&#xff08;&#xff09; 用 法&#xff1a; int system(char *command); 原理&#xff1a; 創建一個子進程去加載一個新程序執行&#xff0c;而Linux命令基本都是一個單獨的進程實現的&#xff0c;所以你所掌握的Linux命令越多&#xff0c;該函數…

AUTOSAR規范與ECU軟件開發(實踐篇)4.2 基于Matlab/Simulink的軟件組件開發

目錄 前言 1 、Matlab/Simulink與AUTOSAR基本概念的對應關系 2 、軟件組件內部行為建模方法

由淺入深學習Tapable

文章目錄 由淺入深學習TapableTapable是什么Tapable的Hook分類同步和異步的 使用Sync*同步類型鉤子基本使用bailLoopWaterfall Async*異步類型鉤子ParallelSeries 由淺入深學習Tapable webpack有兩個非常重要的類&#xff1a;Compiler和Compilation。他們通過注入插件的方式&a…

CentOS系統環境搭建(一)——Centos7更新

Centos7更新 更新 yum&#xff08;包括centos內核&#xff09; yum update執行后&#xff0c;系統將更新到centos 7.9。 從這一篇文章開始開始&#xff0c;我將開始在centos系統環境搭建&#x1f517;https://blog.csdn.net/weixin_43982359/category_12411496.html中開始對C…

【數據分析入門】Numpy進階

目錄 一、數據重塑1.1 透視1.2 透視表1.3 堆棧/反堆棧1.3 融合 二、迭代三、高級索引3.1 基礎選擇3.2 通過isin選擇3.3 通過Where選擇3.4 通過Query選擇3.5 設置/取消索引3.6 重置索引3.6.1 前向填充3.6.2 后向填充 3.7 多重索引 四、重復數據五、數據分組5.1 聚合5.2 轉換 六、…

回溯算法詳解

目錄 回溯算法詳解 回溯VS遞歸 回溯算法的實現過程 n個結點構造多本節要討論的是當給定 n&#xff08;n>0&#xff09;個結點時&#xff0c;可以構建多少種形態不同的樹。 回溯算法詳解 回溯算法&#xff0c;又稱為“試探法”。解決問題時&#xff0c;每進行一步&#…

主成分分析Python代碼

對于主成分分析詳細的介紹&#xff1a;主成分分析&#xff08;PCA&#xff09;原理詳解https://blog.csdn.net/zhongkelee/article/details/44064401 import numpy as np import pandas as pd標準PCA算法 def standeredPCA(data,N): #data:…

【golang】鏈表(List)

List實現了一個雙向鏈表&#xff0c;而Element則代表了鏈表中元素的結構。 可以把自己生成的Element類型值傳給鏈表嗎&#xff1f; 首先來看List的四種方法。 MoveBefore方法和MoveAfter方法&#xff0c;它們分別用于把給定的元素移動到另一個元素的前面和后面。 MoveToFro…