C 語言指針常見的錯誤


C語言指針常見錯誤,主要有兩種情況:

1).指針未初始化;
2).避免使用scanf給指針賦值;
3).賦值指針為NULL

指針未初始化

這種情況:

int i = 10, *p;

*p = i;
printf("*i=%d\n", *p);

指針變量p是沒有初始化的,就是你還沒有給他里面賦值地址進去。這種為初始化的情況在高版本的 VS 中是直接編譯不過去的;會報錯:C4700 使用了未初始化的局部變量“p”

避免 scanf賦值指針

int i = 10, *p;
p = &i;  // 初始化 p,指向 i
scanf("%d", p);

這種情況會很容易把原來的i值,或者指向其他內存位置的值改掉導致軟件崩潰,需要謹慎。

賦值指針為NULL

int i = 10, *p = NULL;
*p = i;
printf("%d", *p);

這種情況能編譯通過,運行時會報段錯誤引發了異常: 寫入訪問權限沖突。 p 是 nullptr。需要特別注意。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM