一:分析如下**char* tostr(int num) s[i] = '\0'; return s; }
本意為將整數轉化成字元陣列儲存,然後將這個字元陣列返回。經艱苦實踐,發現不能,原因是指標s是區域性變數,當函式返回時s即銷毀,當然不會返回成功了,只能把乙個無意義的位址傳回去。
所以正確的處理方法可以這樣。
void tostr(int num, char *s) s[i] = '\0'; }
當然這樣就需要傳進乙個s了。當然會後指標s的生命週期尚未結束,故不會出錯。值得總結。
二:讀以下**
char *s;
這段**編譯通過,執行就有問題了,想用指針對字串做處理,可以先定義好字元陣列,然後再用指標。也就是必須出現char s[const]這樣的宣告之後才可用指標訪問使用。
三:**如下
#includeusing namespace std; char *ch(char *str1, char *str2) ; *str2 = '\0'; return p; } int main() 在第14行注釋與不注釋的情況下,進行測試。
不注釋的時候發現輸出尾部總混有str1的成分,這是為什麼呢?原因是我們宣告str2是以字元陣列,而用字元陣列處理字串時,最為重要的問題就是結束符'\0'。如果不告訴str2結束部分,那麼輸出的時候,str2就會一直往後查直到發現'\0'.可是最後卻找到的是str1的'\0'.越界了。所以字串雖然可以用字元陣列來處理,但還是有所不同的。萬分注意。
C C 易錯問題分析
傳給函式形參的實參是作為拷貝傳入,在函式體內改變作為拷貝的實參2是不會影響到傳入的實參1的。規則 1 如果想要通過函式介面改變傳入的數值,那麼需要傳入該數值的指標。2 如果想要改變傳入的指標所指向的值,那麼需要傳入該指標的指標。總之,需要深一層。int fun int fun1 修改方法 由上層呼叫...
js易錯總結
1.addeventlistener 新增的匿名函式將無法移除 var btn document.getelementbyid mybtn btn.addeventlistener click function false 繫結事件 btn.removeeventlistener click fun...
總結 易錯點
題目要求是 結尾,我使用了str 1 str 2 single line containing only marks the end of a test case.題目給的是 f1 1 f2 2 fn fn 1 fn 2 n 3 我卻從f0開始推,並且迴圈跟著從0開始了 題目可能會出現一道腦筋急轉彎...