有問題的指標 返回值

2021-09-13 12:53:53 字數 896 閱讀 1144

區域性變數:

區域性變數的生命週期:進入函式時開始,函式結束時銷毀。

char *getmemory()

//主函式呼叫輸出的時候輸出值是隨機值,因為函式結束的時候buf為空,但是 它的位址是真實 存在的,所以生成乙個隨機值

靜態變數:

靜態變數的生命週期:進入函式時建立,程式結束時銷毀

char *getmemory(int n)

return buf;

}

正常呼叫的時候時對的,printf("%s\n",getmemory(2)); 輸出的是兩個hello;

當有二次呼叫的時候:

char *str1 = getmemory(1);

char *str2 = getmemory(2);

printf("%s\n",*str1);

printf("%s\n",*str2);

//最後輸出的結果都是三個hello

全域性變數:

全域性變數的生命週期:程式開始時建立,程式結束時銷毀

char buf[100] = "";

char *getmemory(int n)

{ for(int i = 0;i結果和靜態變數相同,在此不多贅述。

申請動態的記憶體:

char *getmemory(int n)

{char *buf = (char *)malloc(strlen(「hello」)*n+1);

buf[0] = 『\0』;

for(int i=0;i這四種方法都是不可實施的方法,所意不能返回區域性變數或者臨時變數的位址

有返回值和無返回值函式

前面在定義函式時,有些函式使用了return語句,有些函式沒有使用return語句,使用return語句與不使用return語句有什麼區別呢?由前面的章節我們知道,若定義函式時沒有使用return語句,則預設返回乙個none。要返回乙個none,可以只寫乙個return,但要返回具體的數值,就需要在...

字元指標函式的返回值問題

字元指標函式的返回值問題 今天學弟問了這麼一道問題,為什麼指標型別的函式返回值不是指標而是一串字元,一開始我也很好奇為什麼?後來看了一下原題,發現這個函式是乙個字元指標函式,返回值是乙個字串,這就說得通了。字元指標的返回值是指標 位址 但是字串的名字就是位址,然後又因為cout的過載,遇到這種情況,...

返回值還引數 有返回值有引數的資料運算

有乙個引數有返回值的函式 include include int f int x 函式y 2x 1int add int x 自加函式int main 實現的功能是計算f x 的值,f x 2x 1,以及乙個自加函式return的作用是把函式執行的結果返回給呼叫者,返回值是什麼取決於return後面...