C/C++入門易錯點及經常使用小技巧

前言

C++語言誕生至今已有30多個年頭了,主要集中在須要運行效率比較高的行業,好比如今的遊戲開發以及高效服務器等等。正則表達式

C++學習難度比其它語言都要高,這是不能否認的,其學習難度主要在於它的複雜性,如何入門C++,想必不少人都頭疼過。講到入門,咱們首先是掌握基礎語法,C++的語法是和C語言的語法很相近。數組

**【文章福利】:**小編推薦本身的C語言交流羣:967051845!整理了一些我的以爲比較好的學習書籍、視頻資料共享在羣文件裏面,有須要的能夠自行添加哦!~服務器

今天小編講講C/C++入門易錯點及經常使用小技巧函數

**1. int型 :**絕對值在10^9範圍內的整數均可以定義成int型。學習

**2. long long型 :**若是long long型賦值大於2^31 -1的初值,則須要在初值後面加上LL,不然會編譯錯誤。指針

**3. float、double輸入輸出格式 :**使用printf("%f",c);語句時,%f是float和double型的輸出格式。而在使用scanf輸入時,float輸入格式爲%f,double輸入格式爲%lf。cdn

**4. if條件 :**因爲if(n)表示if(n!=0),因此if(!n)表示if(n==0)視頻

**5. for語句 :**注意在C語言中不容許在for(A;B;C)語句的表達式A裏定義變量(好比inta=0;的寫法是不容許的),但在C++中能夠blog

**6. 數組定義 :**若是數組大小較大(10^6級別以上),則須要將其定義在主函數外面,不然會使程序異常退出。遊戲

**7. 數組賦初值 :**若是咱們定義一個數組int array[10]={12,1,6,4}.可知只對數組的前四項賦值,那麼後面沒有賦值的元素默認爲0.但若是該數組沒有賦初值,數組中的每一個元素均可能會是一個隨機數(不必定是0)。因此若是想給整個數組都賦值爲0,簡單介紹如下四種方法:

  • int array[10]={};
  • int array[10]={0};
  • memset函數 :memset(array,0,sizeof(array));//若數組爲int array[10],則此處sizeof(array)=4*5=20,由於 memset是按字節賦值. 格式 memset(數組名,值,sizeof(數組名));
  • fill函數 :fill(array,array+5,8);//數組從array[0]到array[4]均被賦值爲8,格式 fill(起始地址,結束地址,值);

**注意:**memset()函數需頭文件或<string.h>. 且memset()只能爲數組賦初值0和-1,由於memset()只能以字節爲單位賦值fill()函數需頭文件. 且fill()能夠爲數組或容器的某段區域賦某個任意相同的值.

8. 二維數組賦值 :若二維數組array[4][5]={{1,2,3,4,5},{2,2,3},{},{4,2,3,5}};能夠看出第三行用{}跳過了(若是不加大括號是沒法經過編譯的)

**9. 字符數組初始化 :**字符數組能夠經過直接賦值字符串來初始化(僅限初始化,程序其餘位置不容許這樣直接賦值整個字符串)

**10. 字符數組輸入輸出 :**定義char str[10]; scanf("%s",str); pritnf("%s",str); 注意字符數組在輸入時不須要加&取地址運算符. 且scanf輸入時%s經過空格或換行來識別一個字符串的結束 gets用來輸入一行字符串.gets識別換行符\n做爲輸入結束,所以scanf完一個整數後若是要使用gets,須要先用getchar接收整數後的換行符;puts輸出一行字符串後會緊跟一個換行(\n)

**11. 字符數組長度的重要性 :**字符數組的長度必定要比實際存儲字符串的長度至少多1,做爲結束符'\0'.注int型數組不須要. 且若是不是使用scanf函數的%s格式或gets函數輸入字符串(例如getchar),必定要手動早輸入的每一個字符串後加‘\0',不然printf和puts輸出字符串將沒法識別字符串末尾而輸出一大堆亂碼.

**12. sscanf與sprintf :**sscanf : int n; char str[10]="123"; sscanf(str,"%d",&n); //sscanf寫法的做用是把字符數組str中的內容以"%d"的格式寫到n中(從左往右). sscanf還支持正則表達式. sprintf : int n; char str[10]="123"; sprintf(str,"%d",n); //sprintf寫法的做用是把n以"%d"的格式寫到str字符數組中(從右往左)

**13. 引用& :**注意要把引用的&與取地址運算符&區分開. 引用並非取地址的意思,引用不產生副本,而是給原變量起了個別名 .因爲引用是產生變量的別名,所以常量不可使用引用。因此:

其中不能夠直接寫成swap(&a,&b),而必須用指針變量p1和p2存放&a和&b,而後把指針變量做爲參數傳入.

14. 訪問結構體內的元素 :

因而訪問stu中變量的寫法: stu.id stu,name stu.next

訪問指針變量p中的元素的寫法: (*p).id <=> p->id (*p).name <=> p->name (*p).next <=> p->next

15. 結構體的初始化

**注意:**若是本身從新定義了構造函數,則默認生成的構造函數就會被覆蓋. 若是想不經初始化就定義結構體變量需手動加上.

文章福利

小編C工做也有五年了,推薦個**C語言/C++學習交流羣:967051845!**裏面整理了一些我的以爲比較好的學習書籍、視頻資料共享在羣文件裏面,有須要的能夠自行添加哦!~

相關文章
相關標籤/搜索