C C 入門易錯點及常用小技巧

2022-03-19 13:08:00 字數 2416 閱讀 1449

int型:絕對值在10^9範圍內的整數都可以定義為int型

long long 型:如果long long型賦值大於2^23-1的初值,需要在初值後面加ll,否則會編譯錯誤。

float,double輸入輸出格式:使用printf(「%f」,c)語句時,%f是float和double型的輸出格式。而在使用scanf輸入時,float輸入格式是%f,double輸入格式是%lf。

if條件句:if(n)表示if(n==1),if(!n)表示if(n==0)

for語句:在c中不允許for(a:b:c)語句的表示式a中定義變數(int a = 0是不允許的),c++中可以。

陣列定義:如果數字大小較大(10^6)以上,則需要將其定義在主函式外面,否則會使程式異常退出。

陣列賦初值:如果我們定義了有個陣列arr[10]=,可知只對陣列的前四項賦值,那麼後面沒有賦值的元素都預設為0,但如果該陣列沒有賦賦值,陣列中每乙個元素都預設為乙個隨機數(不一定是0):

1)    int arr[10] = {};

2)    int arr[10] = ;

3)    memset函式:memset(arr,0,sizeof(arr));//memset按位元組賦值,標頭檔案string.h

4)    fill函式:fill(array,array+5,8);//array[0]~arr[4]均被賦值為8,標頭檔案algorithm

二維陣列賦值:若二位陣列array[4][5] = ,,{},};//第三行用{}跳過了,如果不加大括號是無法通過編譯的。

字元陣列初始化:字元陣列可以通過直接賦值字串來初始化(僅限初始化,程式其他位置不允許這樣直接賦值整個字串)

10.字串陣列的輸入和輸出:定義char str[10],scanf(「%s」,str); printf(「%s」,str),字元陣列在輸入時不需要加&取位址運算子,且scanf輸入時%s通過空格或換行來識別乙個字串的結束。

gets用來輸入一行字元,gets識別換行符\n作為結束標識,因為scanf完乙個整數如果用用到gets,需要先用getchar接受整數後面的空格或者換行符,puts輸出一行字元後會緊跟著乙個換行(\n)

11.字元陣列長度的重要性:字元陣列的長度一定要比實際儲存字串的長度至少多1,作為結束符』\0』,int型不需要,且如果不是使用scanf的函式%s格式或gets函式函式輸入字串,一定要手動輸入的在每個字串後加』\0』,否則printf和puts輸出字串將無法識別字串末尾而輸出一大堆亂碼。

12.sscanf和sprintf:

1)        sscanf:int n;char str[10] = 「123」;sscanf(str,」%d」,&n); //sscanf寫法的作用是把字串陣列str的內容以」%d」的格式寫到n中,從左到右,sscanf還支援正規表示式

2)        spintf:int n;char str[10] = 「123」;sprintf(str,」%d」,n); //sprint的作用是把n以」%d」的格式寫到str字元陣列中,從右到左

13.引用&:引用不產生副本,而是給原變數起乙個別名,由於引用是產生變數的別名,因此常量不可以使用引用。

#includeusing

namespace

std;

void swap(int* &p1,int* &p2)

intmain()

其中不可以直接寫成swap(&a,&b),必須使用指標變數p1和p2存放&a,&b,然後把指標變數作為引數傳入。

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

struct

studentinfostu,*p;

於是訪問stu中變數的寫法:

stu.id;stu.name;stu.next;

訪問指標變數p的元素寫法:

(*p).id  <==> p->id

(*p).name < == > p->name;

(*p).next < ==> p->next

15.結構體的初始化:

struct

studentinfo;

//有參建構函式,注意變數名不要與已有變數名重複

studentinfo(int

_id)

//簡化的有參建構函式

studentinfo(int _id,char

_gender):id(_id),gender(_gender){}

};

C C 常用函式易錯點

include void memset void buffer,int ch,size t count 將記憶體中buffer的前count個 位元組的內容全部設定為ch指定的ascii值.經常用來初始化陣列.複製時 以位元組為單位,如果buffer是int long,或者其他型別的指標時,需要注意...

C語言易錯點及難點

獲得字串長度 strlen s 需要標頭檔案 include 判斷兩個字元是否相等用 判斷兩個字串相等 if strcmp s1,s2 0 strcmp s1,s2 相等返回0 想要輸入帶空格用gets s 標頭檔案stdlib.h中的方法atoi可以實現字串轉數字 996 轉為996 includ...

指標知識點及易錯點總結

本文示例 環境為 vs2017下純c c 因為型別檢測增強,會直接標紅,需要強轉才能執行 1.指標 1.1指標簡介 指標是一種資料型別,自身占用記憶體空間 win32平台,所有指標占用4位元組記憶體空間 指標儲存的值是記憶體位址的編號。指標變數指向誰,就把誰的位址賦值給指標變數。指標通過 解引用,操...