99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

C語言有哪些常見的陷阱

發(fā)布時間:2016-08-04 20:07  回復(fù):0  查看:2396   最后回復(fù):2016-08-04 20:07  

學(xué)習(xí)C語言的過程中,我們不免會遇到很多陷阱,我把這些常見的陷阱總結(jié)起來,就是為了避免以后犯同樣的錯誤。

1.1char array1[100]; 2 char* array2;二者都可以當(dāng)指針用,使用時有何區(qū)別?

1中字符數(shù)組,存儲于棧區(qū),sizeof(array1)為100,aray1代表首元素首地址,不可以被賦值,array1[0]這樣可以被賦值,數(shù)組大小確定,難以擴(kuò)容

2中存儲于字符常量區(qū),sizeof(array2)為4,array2可以被賦值,array2[0]不可以被賦值,空間大小可變

2. 32位中,long型和指針占4個字節(jié),64位中占8個字節(jié)

3.strcat連續(xù)拼接字符串時,每次都要找到結(jié)尾,解決方案時給結(jié)尾做標(biāo)記

4.const在C語言中為只讀變量,C++中為常量

5.一般機(jī)器默認(rèn)小端存儲,蘋果機(jī)器為大端存儲

6. char a[] = "Hello world";

sizeof(a) = 12注:sizeof時算\0,strlen時不算\0

sizeof(*a) = 1      sizeof(&a) = 4

當(dāng)字符數(shù)組以函數(shù)參數(shù)形式存在時,sizeof為4

7.printf函數(shù)執(zhí)行時,計算順序是從后向前,輸出順序是從前向后,可以將printf函數(shù)中想成傳入的參數(shù),存儲于棧區(qū)

8.

int a[] ={2,8,16,24};char* p1 = a;char* p2 = &a[3];

p2-p1 = ?

本題中,兩個地址相減,求的是指針的偏移量,p1指向的內(nèi)容是2,p2指向的內(nèi)容是24,p2-p1為3個4字節(jié)大小,為12,又因為p1和p2的基本類型為1個字節(jié),所以(3*4)/1=12

9.括號表示表達(dá)式,表達(dá)式要變成int類型計算;有符號要向無符號類型轉(zhuǎn)換;小類型要向大類型轉(zhuǎn)換

10.

(a=1)?2:3

a=1,表示整個表達(dá)式的值為1,所以輸出為2

11.switch case語句中,每個case過后如若沒有遇到break,則順次向下執(zhí)行

12.char a[100] = {'a','b','c','\0','1','2'};遇到'\0'字符串結(jié)束

char a[100] = {'a','b','c','0','1','2'};   '0'代表字符不是'\0'

char a[100] = {'a','b','c',0,'1','2'};     '\0'就是0,字符串結(jié)束

13.阿克曼函數(shù)ack(1,k) = 2+x;   ack(2,x) = 3+2*x;   ack(3,x) = 2^(x+3)-3;

14.在移位運算時,數(shù)據(jù)需要補(bǔ)位時,符號位是什么就補(bǔ)什么

int i = 0xf0000000;i >>=1; i=0xf8000000

15.常量數(shù)值不能進(jìn)行自加自減運算

16.注意與或運算,與運算時,前面表達(dá)式為假時,與運算符后面的表達(dá)式不參與運算,輸出為假,若為真,則再計算與運算符后面的表達(dá)式

或運算時,或運算符前面的表達(dá)式為真時,不計算或運算符后面的表達(dá)式,直接輸出為1,若為假,則在計算或運算符后面的表達(dá)式

17.sizeof返回值為unsigned int,當(dāng)int遇到了unsigned int時,轉(zhuǎn)換為unsigned int進(jìn)行計算

18.棧區(qū)空間的生命周期在遇到}時截止,在}之前返回棧區(qū)申請的空間不存在,因為被回收了,字符常量區(qū)的內(nèi)容只能讀不能向里面寫

原文來自:博客園/zs0909zs

您還未登錄,請先登錄

熱門帖子

最新帖子

?