記憶體有棧區,堆區,靜态區,棧區存放局部變量。棧區的預設使用,先使用高位址處的空間,再使用低位址處的空間。數組的下标的增長,位址由低到高變化,正式由于棧區的使用是先用高位址再用低位址,是以數組超出範圍之後的位址會往i所在的位址方向走,當超出範圍的數組元素來到和i同一個位址,并且被指派為0時,下一輪循環就開始了,并且進入了死循環。VC6.0下面<=10就會死循環。gcc編譯器<=11 就會死循環。vs2013 <=12 死循環。這個時候在Release版本下進行調試會發現,會将代碼優化,将記憶體結構進行優化,i的位址是小于arr的位址的。 這個是把對于i的定義放在arr之後顯示的報錯 libpng warning: iCCP: cHRM chunk does not match sRGB,本人使用的編譯器是MSVS2019。
1.代碼運作正常
2.bug少
3.效率高
4.可讀性好
5.可維護性高
6.注釋清晰
7.文檔齊全
常見的coding技巧
1.使用assert
2.盡量使用const
3.養成良好的編碼風格
4.添加必要的注釋
5.避免編碼的陷阱
很煩的一點,當時調試的時候NULL一直顯示未定義,查了之後說是需要stdio.h,我也引用了啊,,然後我就想到了C語言之中一直存在的語序問題,最後發現,這個頭檔案需要引用在NUL的使用之前,這個函數的優化還未完成,之後還會有更加好的版本