return可以返回基本类型的局部变量,但是不可以返回指针
2017-05-16 11:00
429 查看
关于return:
今天脑袋一懵逼,无法理解函数将局部变量的基本类型值返回。后来找了一下,原来这样做是合法的。原因是return 有一个返回机制。但是局部指针是不能被返回的。因为地址里面的内容已经被销毁了。生命周期结束。
#include <stdio.h>
int add(int a,int b){
return a+b;
}
int *sub(int a,int b){
int *c=a-b;
return c;
}
void main()
{
printf("a+b=%d\n",add(3,2));
int *c=sub(7,2);
printf("a-b=%d\n",*c);
}
结果:
a+b=5
Segmentation fault (core dumped)
今天脑袋一懵逼,无法理解函数将局部变量的基本类型值返回。后来找了一下,原来这样做是合法的。原因是return 有一个返回机制。但是局部指针是不能被返回的。因为地址里面的内容已经被销毁了。生命周期结束。
#include <stdio.h>
int add(int a,int b){
return a+b;
}
int *sub(int a,int b){
int *c=a-b;
return c;
}
void main()
{
printf("a+b=%d\n",add(3,2));
int *c=sub(7,2);
printf("a-b=%d\n",*c);
}
结果:
a+b=5
Segmentation fault (core dumped)
相关文章推荐
- C指针以及为什么不能返回局部指针变量,却可以返回局部变量
- C语言学习7 :二级指针定义,强制转换,多级指针初步,6级指针构造,错误应用*p=&a,错误应用 二级p2,void型指针的兼容性,malloc函数基本用法,malloc分配空间和堆栈空间的区别,验证malloc函数内存的分配,验证malloc函数的越界,内存泄漏,指针不能返回局部变量地址,内存分配
- C指针以及为什么不能返回局部指针变量,却可以返回局部变量
- 返回局部变量指针
- 返回局部变量指针
- 值类型局部变量必须先初始化才能使用,值类型成员变量可以不初始化。
- C++ 基本语法之变量(指针)与数据类型(占用字节大小)
- 父类型指针可以指向子类型的对象。但是对于子类型的指针不能指向父类型的对象(原理)
- 返回指向局部变量的指针或引用的带来的问题讨论
- 返回指向局部变量的指针或引用的带来的问题讨论
- 返回局部变量指针
- 为什么返回值为数值时,返回局部变量可以,而返回值为引用时,返回局部变量不可以?
- 定义struct/struct定义在哪里/函数返回指针类型/指针数组与数组指针/{}里是局部定义/fabs、abs
- 解析C++普通局部变量与指针类型的对象变量的应用区别
- 返回指向局部变量的指针或引用
- C语言学习8:malloc返回的void*类型指针不可以做更改,free双重释放,二维数组的初始化和打印,a和a[0]和a[0][0]的区别,数组指针(*p)[3],指针数组*a[10],动态内存分配版约瑟夫环,动态分配版去空格和逗号处理,二级指针与二维数组互用
- 如果从函数中返回局部变量的地址,引用或者指针的形式,则变量类型必须是静态的或者常量,即不在栈中存储
- 为什么C++中千万不要返回局部对象或变量的引用和指针
- 返回指向局部变量指针的函数 与 返回局部变量引用的函数
- 返回局部变量指针的问题