(1) char *(字串)做函式引數出錯模型分析
比如**如下:
void copy_str21(char *from, char *to)
for (; *from!='\0'; from++, to++)
*to = '\0';
}//字串逆序
int main()
; char *p =; p = null;
char to[100];
copy_str21(p, to);
}
注意,如果傳給from指標的是null, 那麼在使用*from的時候就會出錯,因為,需要先判斷from是不是null. 總之,不要相信主調函式給你傳的記憶體空間。
(2) 越級 (語法級別的越界)
舉個例子,比如:
char buf[3] = "abc"; //定義成buf[4]才對,因為這是字串初始化字元陣列,預設加』\0』(c風格的字串)
(3) 不斷修改指標變數的值
這個free(a)會出現問題,因為a已經不是指向這塊記憶體區域的首地了,很多時候,這是產生bug的根源
(4) c語言中棧中分配的記憶體
注意, c語言中,棧中可以分配記憶體,但是在棧中分配的記憶體,一離開其作用區域,就會被釋放了,特別要注意這一點,比如說要在棧中分配陣列記憶體的地方,一定要格外小心。
一級指標二級指標
例如 int p null int代表指標p指向的資料型別是int型,代表這是乙個指標變數,1 指標變數儲存的內容是指向的變數的位址 2 在使用sizeof判斷指標的位元組數時,在32位機器上為4個位元組,在64位機器上為了相容,仍然是四個位元組大小 3 小知識點,不同型別的指標除了指向的變數資料型...
一級指標陣列
示例1 include intmain void 定義了乙個長度為5的物理空間陣列 每個長度為1的空間都有自己獨有的實體地址十六進製制 a 3 3 a printf p n a 1 此時輸出的為 實體地址 即a 2 printf p n a 2 printf d n a 3 a 3等價於 a 0 3...
一級指標與二級指標
如下圖所示,整型指標xptr指向變數x的位址。原始碼 include int main 實現方法一如下圖所示,先為二級整型指標ptr分配空間,然後賦值。原始碼 include include int main printf n return 0 執行結果 實現方法二 如下圖所示,先為二級整型指標pt...