C語言筆記-指標(4)-函數返回的陷阱
函數可以回傳指標,會有陷阱存在,過往經驗不足的時候也有吃過鱉:
執行2次:
原因出函式退出時,陣列內容的內存會被釋放,但指標一然會回傳
不過通常編譯器都會提出警告!
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝
#include <assert.h> #include <stdio.h> typedef struct powers{ double base,square,cube; }powers; powers get_power(double in){ powers out={ .base=in, .square=in*in, .cube=in*in*in }; return out; } int *get_even(int count){ int out[count]; for(int i=0;i<count;i++) out[i]=2*i; return out; //埋下問題 } int main(){ powers threes=get_power(3); int *evens=get_even(3); printf("threes:%g\t%g\t%g\n",threes.base,threes.square,threes.cube); printf("evens: %i\t%i\t%i\n",evens[0],evens[1],evens[2]); }
執行2次:
原因出函式退出時,陣列內容的內存會被釋放,但指標一然會回傳
不過通常編譯器都會提出警告!
此文章內容參考"21 century c"一書,在此做筆記
如須刪除請告知 謝謝