四道經典c
語言指標試題
void getmemory( char *p )
void test( void )
本題中傳入中
getmemory( char *p )
函式的形參為字串指標,在函式內部修改形參並不能真正的改變傳入形參的值,執行完
char *str = null;
getmemory( str );
後的str
仍然為null
;存在記憶體洩露,列印為空
char *getmemory( void )
void test( void )
char p = "hello world";
return p;
p陣列為函式內的區域性自動變數,在函式返回後,記憶體已經被釋放。這是許多程式設計師常犯的錯誤,其根源在於不理解變數的生存期。
void getmemory( char **p, int num )
void test( void ) 存在
2處問題:
本題中的
test
函式中未對malloc
的記憶體進行釋放。
本題中的
getmemory
避免了試題一的問題,傳入
getmemory
的引數為字串指標的指標,但是在
getmemory
中執行申請記憶體及賦值語句
*p = (char *) malloc( num );
後未判斷記憶體是否申請成功,應加上:
if ( *p == null )
void test( void ) 存在
2處問題:
試題四存在與試題三同樣的問題,在執行
char *str = (char *) malloc(100);
後未進行記憶體是否申請成功的判斷;
另外,在free(str)
後未置
str為空,導致可能變成乙個「野」指標,應加上:
str = null;
c語言100道經典題目 C語言經典100題(5)
1 上期答案揭曉 include int main sum sum day 再加上某天的天數 if year 400 0 year 4 0 year 100 0 else if leap 1 month 2 printf 這是這一年的第 d 天。sum printf n 以上例項輸出結果為 請輸入年...
c語言100道經典題目 C語言經典100題(34)
1 上期答案揭曉 include include define max 1000 int prime max int isprime int n int isprime int n return 1 void sieve int isprimesieve int n int main 以上例項輸出結...
幾道經典C語言程式實現
2.程式設計在乙個已知的字串中查詢最長單詞,假定字串中只含字母和空格,用空格來分隔單詞。char str 255 printf 請輸入乙個字串 n scanf n str gets str intmaxlength 0,maxindex 0 intlength 0 inti 0 while str ...