c语言函数返回值栈 c语言函数返回结构

C语言规定,函数返回值的类型由什么决定?

c语言规定,函数返回值的类型是由函数首部定义的类型决定。函数返回值应与首部定义的类型一致,如若不一致,则自动将返回值强制转换为函数首部定义的类型。没有定义类型时默认为int型。

创新互联公司是一家专业提供岚山企业网站建设,专注与网站设计制作、成都网站制作、H5技术、小程序制作等业务。10年已为岚山众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

也就是说你的函数是什么类型,返回值就是什么类型。

比如:

函数定义 int fun(int a,char b)

返回值就是整型

函数定义 int *fun(int a)

返回值就是基类型为整型的指针

函数定义 void fun(int a)

无返回值

扩展资料

函数可以有返回值,只要 return 就可以给出一个,不过常常不用它,有两个原因:

1、C/C++里返回值是复制出去的,而对于大的对象,复制的代价很高;

2、有些对象是不能复制的,至少编译器不知道怎么复制,比如数组。

于是有了下面这样的函数:

bool GetObj(ObjType obj);

bool Encode(const char* src, char* dest);

用一个参数来代替返回值,而返回值只是指示函数执行是否成功。

返回一个大对象是困难的,但这个困难存在于 C 程序中,而不是 C++ 程序中。 C 函数里较少通过返回一个指针来返回对象,因为:

1、如果指针指向栈变量,毫无疑问,要么不用这个返回值,要么是一个错误;

2、如果指针指向堆变量,需要用这个函数的程序员会好好的看文档且足够细心会调用 free,要么就是内存泄漏;

3、如果指针指向 static 变量,那么用这个函数的程序员牢牢记住“下次调用这个函数以后,上次的返回值也会跟着变”。

在C++里直接返回裸指针的话,情况并不会有什么起色,不过 C++ 有智能指针的,通常它们指向堆变量,占用的空间和裸指针一样大。考虑前面第一个函数,写成:

std::auto_ptrObjType GetObj();

返回值如果不要,作为临时变量,会立即被析构,返回的对象被释放;如果需要,就得赋值给另一个智能指针。总之不用程序员记得,编译器会保证这个对象的释放。

考虑第二个函数,稍微有一点麻烦,因为 auto_ptr 是不能用来持有数组的,不过,在C++的世界里,std::string 几乎总是比 char* 好用:

std::auto_ptrstd::string Encode(const char* src);

最后考虑最麻烦的情况:

bool AssembleObjList(ObjType objList[], size_t length);

C语言中函数返回指向栈内存的指针的问题

p是指向局部变量的指针,当函数退出时,局部变量会被释放,这时,p所指向的位置就不一样是原来的数。

因为fun()函数返回的值被计算机的临时变量存放,当赋值给p的时候,p是指向临时变量的地址,所以还可以读取出100。

*p = "hello"这是常量字符串,从静态存储区分配,第一步字符串"hello"从静态存储区获取一块内存,指针变量p才指向这块静态内存,这块内存的特点是从程序开始到结束一直从在,所以可以返回。

扩展资料:

函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。

在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。

参考资料来源:百度百科-返回值

c语言的函数返回值?

你可以这么理解,比如我们定义了一个函数fun(),如果这个函数有返回值,那么在调用程序里面(比如主函数)就可以把这个函数当成一个数使用;如果没有返回值,那么通常他就是一个独立的语句存在。

比如fun函数里面有个return 0;表示返回值是零,那么在调用函数里面就可以存在诸如

a=fun();b=a+fun();if(fun()=0{};……这类的语句,表示a=0;b=a+0;if(00){};等等,当然也可能是返回一个变量的值,你个指针的值是一样的。

如果没有return 语句,那么函数没有返回值,调用函数里面就不能把他当做一个数值来使用,会出现:

fun();单独成句的语句,在fun()里面可能进行了一些操作,但不需要结果。

C语言自带的函数通常都有返回值,计算函数返回计算结果,操作函数返回操作结果(成功返回1,失败返回0)


网站标题:c语言函数返回值栈 c语言函数返回结构
文章位置:http://azwzsj.com/article/doihdis.html