int testa (void)
char * testb (void)
int main()
對於返回值的情況:
testa與main函式同在棧區,testa結束時c++建立臨時變數,然後將返回值複製給該臨時
變數。
printf( " the value of testa is %d n", testa() ) 時輸出的是該臨時變數的值,testa中的b已經不存在。
對於返回指標的情況:
型別,所以c++會首先建立乙個char *型別的臨時變數,再把該陣列的首位址賦給臨時變數;
函式結束後該陣列也就被銷毀,這就意味著臨時變數指向了乙個「未宣告的位址」,幸運的情況下,這段記憶體暫時還沒有被其他的資料所覆蓋,因此還能輸出正確的內容。
在testb裡面,如果換成char* str="abc";return str; 由於這時str指向的是全域性資料區的一段記憶體位址,所以函式結束後臨時變數也指向該位址,所以編譯器不會提出警告。但這樣的方法是不推薦的。
返回引用:
這中情況的效率最高,它直接返回乙個物件,不產生返回值的副本。但同時也要注意避免返回區域性引用的情況。
C語言函式返回值為指標和函式返回值為void
有時遇到函式返回值為空和函式返回值為指標的情況下,需要在前面定義該函式 函式的返回值為指標也必須在此定義,函式的返回值為void必須在此定義,返回值是整形或者其他基本型別不需要在此定義 函式功能 把格式化的資料寫入某個字串 函式原型 int sprintf char buffer,const cha...
C語言 void不能返回值,指標來返回
題目 請編寫函式void fun int x,int pp,int n 它的功能是 求出能整除x且不是偶數的各整數,並按從小到大的順序放在pp所指的陣列中,這些除數的個數通過形參n返回。例如 若x中的值為30,則有4個數符合要求,它們是1 3 5 15。注意 請勿改動主函式main和其他函式中的任何...
C語言中scanf 函式的返回值
c語言中簡單的輸入scanf函式和輸出printf函式,我們經常使用,也很熟悉,但有時卻還是會在這兩個地方犯錯。scanf 函式 功 能 執行格式化輸入 用 法 int scanf char format argument,scanf 函式是通用終端格式化輸入函式,它從標準輸入裝置 鍵盤 讀取輸入的...