千萬不要在程式中隨意移動你的指標!!!因為這個小問題搞了一下午+晚上
字元陣列的容量必須至少比待儲存字串中的字元數多1.
在分配字元指標空間malloc()時也必須至少比至少比待儲存字串中的字元數多1,再分配空間後必須及時free(); 釋放指標後, 一定要將指標指向null。否則p指向的空間是未知資料 p就成了野指標
編譯器問題——c89和c99char test[5]
="abcd"
;//最多四個字元
char
*info =
malloc(6
);memset
(info,0,
6);strcpy
(info,
"abcdef");
//此處分配的字串空間不足,申請6個字元空間,最多5個字元**
printf
("1.%s\n"
, test)
;//info++;
printf
("2.%s\n"
, info)
;free
(info)
; info =
null
;
c89規定,在任何執行語句之前,在塊的開頭宣告所有區域性變數。
在c99以及c++中則沒有這個限制,即在首次使用之前,可在塊的任何位置都可以宣告變數。
visual studio2013終於開始比較良好地支援c99特性
原始檔儲存為.c格式的話變數只能定義在最前,若儲存為.cpp格式的話,變數定義較為靈活,不用在最前。
在c語言裡,變數只能在函式的開頭處(作用域即{})宣告和定義。在函式裡要用到的變數必須要在開頭處宣告定義。宣告定義的前面不能有任何其他非宣告定義的語句。全域性變數在函式體的外部宣告定義。而c++裡(.cpp檔案是按c++標準編譯的),只要在用到變數前對該變數進行宣告定義就行了,位置不做特別要求。而c語言的就定了在乙個模組裡(函式、迴圈體等)先宣告一切所需變數後才能進行相關操作的規定。
希望大家以此為鑑,不要犯低階錯誤!
C語言編寫實際問題看法
每個人應分到7個籮筐,每人各3.5筐魚。採用3 3陣列來表示三個人分到的東西。陣列的每行每列元素之和都是7 陣列行 滿筐 半筐 3.5筐 每個人所得滿筐數不會超過3筐 每個人至少有1個半筐 來自網路 include int main int a 3 3 count int i,j,k,m,n,fla...
C語言 Switch語句解決實際問題
任務 include define price 12 此處以千千快遞為例,每千克貨物運費12rmb,定義常量巨集 int main printf 請輸入距離 千公尺 scanf f fdistance if fdistance 0 if fdistance 3000 else ffreight pr...
C語言之實際問題 指標賦值
c語言之實際問題 指標賦值 const u8 testbuf 20 void fun u8 mode u8 ptbuf 0 switch mode case 1 ptbuf testbuf printf ptbuf break case 2 ptbuf 0 1 ptbuf 1 1 printf pt...