c語言中有關于在函數返回值的問題,在函數中的局部變量主要是在棧上開辟的,出了函數變量就被回收了,針對函數返回值得問題,給出下面幾個比較具體的例子來說明:
函數返回值是在函數中定義的局部變量
這類型的返回值在主函數中是可以使用的,因為返回局部變量值得時候,返回的是值得一個副本,而在主函數中我們需要的也只是這個值而已,因此是可以的,例如
int fun(char *arr)
{
int num = 0;
while (*arr != '\0')
{
num = num * 10 + *arr - '0';
arr++;
}
return num;
printf("%d ", num);
}
int main()
{
int tem = 0;
char *arr = "12345";
tem = fun(arr);
printf("%d",tem);
system("pause");
return 0;
}
2.函數返回的是函數中定義的指針變量
char *fun()
{
char *arr = "1234";
return arr;
}
int main()
{
char *tem = fun();
printf("%s", tem);
system("pause");
return 0;
}
這在運行過程中也是正確的。
3.函數不能返回局部變量的地址
int *fun()
{
int a = 10;
return &a;
}
int main()
{
int *tem = fun();
printf("%d", *tem);
system("pause");
return 0;
}
4.函數也不能返回數組的首地址
int *fun()
{
int arr[] = { 1, 2, 3, 4 };
return arr;
}
int main()
{
int *tem = fun();
system("pause");
return 0;
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。