四道經典C語言指標試題

2021-05-25 12:44:15 字數 1254 閱讀 4010

四道經典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 ...