当前位置:首页 » 编程语言 » c语言返回值临时变量
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言返回值临时变量

发布时间: 2022-07-12 15:43:06

1. c语言中,函数返回值怎么用

就你的函数功能而言,可以使用指针和引用的方法来交换两个变量的值。用返回值的方式有点多余,因为c语言函数只能返回一个结果,如果要返回多个值,则需要写成一个结构体返回,但这样其实返回的仍然是一个临时变量,并没有交换两个变量的值,所以不符合你的需求

2. c语言的问题 警告 1 warning C4172: 返回局部变量或临时变量的地址

return (char*)u8buf; 因为 u8buf是局部变量, 出函数体后, 变量占用的空间就被释放了, 你把u8buf地址返回 会有警告的.

另外这个定义const char* u8buf[128]; 我不知你是不是这样想的, 这是定义了一个指针数组而不是字符数组, u8buf 是可以放128个指针的数组.

3. c语言返回值怎么理解

子函数的返回值,main主函数也是有返回值的,但是一般用不到都忽略掉了,一般来说的返回值就是子函数的返回值。当需要一个函数去处理数据时,如求平方,这时候求平方后的值可以有两种方法表达,

以值的形式返回给你,即return x,这样就可以利用这个结果了,此时函数名前当然要加返回的数据类型了。

当不需要对这一结果进一步处理时,直接printf,这样可以直接在终端上显示结果了,这时就没必要去加了,直接VOID。

常量与变量

常量其值不可改变,符号常量名通常用大写。

变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明,它们以ASCII的NULL作为数组的结束。要特别注意的是,中括号内的索引值是从0算起的。

4. c语言返回值具体是指什么

子函数的返回值,main主函数也是有返回值的,但是一般用不到都忽略掉了,一般来说的返回值就是子函数的返回值。当需要一个函数去处理数据时,如求平方,这时候求平方后的值可以有两种方法表达

1、以值的形式返回给你,即return x,这样就可以利用这个结果了,此时函数名前当然要加返回的数据类型了

2、当不需要对这一结果进一步处理时,直接printf,这样可以直接在终端上显示结果了,这时就没必要去加了,直接VOID

(4)c语言返回值临时变量扩展阅读

void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 * 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。

指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。

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

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

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

比如:

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

返回值就是整型

函数定义 int *fun(int a)

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

函数定义 void fun(int a)

无返回值

(5)c语言返回值临时变量扩展阅读

函数可以有返回值,只要 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_ptr<ObjType> GetObj();

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

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

std::auto_ptr<std::string> Encode(const char* src);

最后考虑最麻烦的情况:

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

6. C语言中函数返回什么类型的变量哪些可以是临时,哪些必须是静态或全局

这要看具体的使用情景了:
比如说我现在在别人家做客,要喝水,拿一次性杯子,临时的,喝完就扔
但是我自己在家喝水和出去旅游,需要同一个杯子,就是静态的,出门和在家都能用,但是不能同时用

简单来说,临时变量就是不需要跨函数、跨线程和进程的时候使用,作用范围比较小,但是使用频率最高,不需要考虑多线程安全
静态变量可以在函数内定义,但是共用的,可以被更改和调用,程序不死则一直存在
全局变量与静态变量类似,但是要定义在所有函数以外,需要小心被多线程更改

我语言有点杂乱,看一下摘抄吧

静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。
(2)静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋值。数值型变量自动赋初值0,字符型变量赋空字符。
(4)对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源文件的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。

7. c语言中return语句的具体作用是什么返回值是干嘛的,谁向谁返值,返到哪里请回答的具体点,谢谢!

在函数中,如果碰到return 语句,那么程序就会返回调用该函数的下一条语句执行,也就是说跳出函数的执行,回到原来的地方继续执行下去。但是如果是在主函数中碰到return语句,那么整个程序就会停止,退出程序的执行。
1.return语句不可返回指向“栈内存”的“指针”或“引用”,因为“栈内存”的空间在函数体结束时,自动被销毁,指向这里的指针就会出错!
要搞清楚返回的究竟是“值”、“指针”、还是“引用”。
例如:
char * Function(void)
{

char str[]="Hello,world!"; //str的内存是在Function这个函数的栈上的

return str; //这里就会出错,返回时,str已经不知道指向哪里了

}
2.因为返回值的不同,处理的方法也不同,否则会出错的

3.如果函数返回的值是一个对象,那么就要考虑return语句的效率了!
例如:代码1

return String(str1+str2);

这是临时对象的语法,表示“创建一个临时对象,并返回它”。但是它并不 与 “先创建一个
局部对象temp,然后返回它的结果”等价!!
实际上它们差了很多了!
上面的 代码2 执行时,将发生三件事:
1:temp对象被创建,同时完成初始化;
2:拷贝构造函数把temp拷贝到保存返回值的外部存储单元中;
3:temp在函数结束时被销毁。

但是代码1执行时跟代码2不同:编译器直接把临时变量创建并初始化在外部存储单元里,省去了拷贝和
析构的过程,也就少了这部分的时间开销,提高了效率。所以,返回任何结构或类的对象时,一定要这
样做!

另外,return int(x+y);这样的语句不要写成:temp=int(x+y);return temp;
虽然象int,float,double 等数据类型不存在拷贝析构的问题,不会提高多少效率,但写出来的语句更简洁,
看来也清楚的多!

8. C语言中返回值是什么意思有什么用

说来话长。c语言中,首先,返回值是函数的返回值;然后,函数的函数名被作为一个变量处理;最后,函数的处理结果数据带回给调用函数作为返回值就被值赋给了(函数名)变量的。这个返回值可以用来判断函数被调用后的运行处理结果,函数细致的返回值可以判断出在被调用中的走向流程。返回值可有可无。