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;
- }
时间: 2024-12-09 11:29:30