程式設計時,容易因為粗心而引發的錯誤

2021-07-03 11:04:21 字數 1705 閱讀 2193

1、二維陣列初始化問題:
int a[10][10]=;//正確

a[10][10]=;//錯誤,和初始化區別開,需要表示式對其賦值。

2、陣列初始化時維數一定要是大於或者等於1的常量表示式:

int a;   //錯誤

int b=10;

int c[b]; //錯誤,必須要是常量

const int sz=get_size();

int d[get_size()]; //錯誤int e[sz]; //錯誤

3、關於static、extern的一些易錯的地方:

關於static的用法,我的空間裡有一篇文章詳細闡述了static在c/c++中的用法。

定義:用於為變數分配儲存空間,還可以為變數指定初始值。在乙個程式中,變數有且僅有乙個定義。
宣告:用於向程式表明變數的型別和名字。定義也是申明,應為定義的同時宣告了變數的型別和名字,可以用extern宣告變數而不定義它。extern說明變數定義在程式的其    他地方,變數可以宣告多次,但是只能定義一次。
此處引用extern用法:在原始檔a裡定義的函式,在其它原始檔裡是看不見的(即不能訪問)。為了在原始檔b裡能呼叫這個函式,應該在b的頭部加上乙個外部宣告:extern  函式原型這樣,在原始檔b裡也可以呼叫那個函式了。注意這裡的用詞區別:在a裡是定義,在b裡是宣告。乙個函式只能(也必須)在乙個原始檔裡被定義,但是可以在其     它多個原始檔裡被宣告。定義引起儲存分配,是真正產生那個實體。而宣告並不引起儲存分配。打乙個粗俗的比方:在原始檔b裡宣告後,好比在b裡開了一扇窗,讓它可以    看到a裡的那個函式。
4、使用陣列名作為實參進行函式呼叫問題void test(int *ia);

int pa[10];

test(pa); //正確,pa相當於&pa[0]

test(pa[1]); //錯誤,pa[0]是int型別

test(pa+4); //正確,pa+4指向陣列第5個元素

5、 同樣是初始化的問題,現在是結構體的初始化和對結構體裡結構體成員變數的賦值規範

typedef struct  

day;

typedef struct  

date;

(1)date date;

date.day = ; //錯誤,請和初始化的情況分開

date.day.hout = 12;//正確賦值

(2)date time = };  //正確的初始化

養成一開始定義時就進行初始化的習慣。

6、字元陣列賦值問題

7、從終端獲取乙個字串(帶空格)

使用cin或者scanf這樣的函式,是以空格為結束符的,故不能使用

可以使用標準的c庫函式gets()來進行獲取,gets()函式使用注意:直至接受到換行符或eof時停止

8、typedef函式指標使用

char (*pfun)(int);   

char glfun(int a)

void main()

C 程式設計時容易出現的錯誤

1.動態建立二維陣列的方法 int arrry 4行五列 array new int 4 for int i 0 i 3 i array i new int 5 2.過載等號後,初始化第二個物件時可以用第乙個物件 3.比較字串a 20 與b 20 是否相等,用strcmp a,b 而不是if a 2...

這些年因為粗心造成程式的程式錯誤

2016 05 12 進入 程式設計師 這一行已經 個月了,想想編碼過程中碰到過的很難查詢到原因的問題,最後十有 都發現是自己粗心造成的 每每此時,心中都有一萬隻草泥馬飛奔而過,恨不能踩死自己 所以,我常常告誡自己,細心,細心,再細心 不要沒被bug煩死,卻被自己蠢死 而且,一般都是由於copy別處...

web前端 解決因為浮動而引發的父元素塌陷問題

父元素因為浮動塌陷問題解決方法 注 清除浮動為 clear both left right。不會使得浮動的元素特性消失,只會作用於受到浮動影響的其他元素。1 給父元素設定高度 有侷限性 1 給父元素設定高度 height 200px 2 外牆法 不能撐開父元素 2 讓外牆清除父元素的浮動 outer...