c语言中函数返回值可以是数组、字符串和结构体吗?

作者&投稿:通浩 (若有异议请与网页底部的电邮联系)
c语言中函数返回值可以是数组、字符串和结构体吗?~

1、ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。
解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。
2、字符串是数组的一种,是字符数组,所以同样不可以作为返回值。
3、结构体类型可以做为返回值,C语言设计者当时引入struct结构体的概念,目的是为了增加一种建立C语言新类型的机制, 换句话说它希望通过struct建立的类型,像内置的int float类型一样使用方便。

当然是可以的,结构体也是一种数据类型
struct a
{
int a;
int b;
}
a fun()
{
a test;
return test;
}

//语法编码规则的角度看
ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。

解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。

结构体类型可以做为返回值,我猜测C语言设计者当时引入struct结构体的概念,目的是为了增加一种建立C语言新类型的机制, 换句话说它希望通过struct建立的类型,像内置的int float类型一样使用方便。

//从汇编角度来看
有两种返回值方法,第一种是直接返回到寄存器的,第二种是类似于结构体返回值的那样 建立临时存储区的返回方式

比如 int 返回值类型、指针返回值类型,在ia32平台上都是直接返回到eax寄存器 不管是vc还是gcc, 对于像float 类型的浮点返回值类型,在ia32平台,往往借助于fpu浮点运算器部件中的寄存器存储于栈中,第三类就是像struct结构体返回值,它需要建立临时对象,对于c语言来说引入一个临时内在区域是问题不大的,但是对于c++这个有时候是致命的。

我是菜鸟,希望能帮到你,观楼主英俊潇洒,风流倜傥,必当世豪杰,诚邀加入0x30百度贴吧,共商义举,建不世之功!

1、ANSI C语言标准,明确规定 数组类型和函数类型不可以做为返回值。
解决这种返回值的方法是通过指针来间接返回,即使用数组指针和函数指针。这可以做为c语言引入指针的另一个理由。
2、字符串是数组的一种,是字符数组,所以同样不可以作为返回值。
3、结构体类型可以做为返回值,C语言设计者当时引入struct结构体的概念,目的是为了增加一种建立C语言新类型的机制, 换句话说它希望通过struct建立的类型,像内置的int float类型一样使用方便。

返回数组的话要注意生存期的问题:
1.函数可以返回数组指针,但并非数组中的每一项,因此算是一个值
2.函数中定义的局部数组在函数退出时会被销毁,返回数组指针没有意义
3.全局数组的话,在函数中做得更改会被保留,一般不用刻意再次返回数组指针了
4.malloc分配的内存,可以返回其地址,此段内存是在堆上分配的,函数退出时不会销毁


C语言中返回值类型是什么?
如果两者不一致,则以函数类型为准,自动进行类型转换。\\x0d\\x0a3) 如函数值为整型,在函数定义时可以省去类型说明。\\x0d\\x0a4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。如例8.2中函数s并不向主函数返函数值,因此可定义为:\\x0d\\x0avoid s(int n)...

C语言函数可以返回值类型不是int吗?
这句话是错误的。在C语言程序中,如果我没没有对函数的类型进行说明的话,那么函数的默认类型是int类型的,也就是说函数必须返回一个int型的返回值。C语言函数是一种函数,用来编译C语言,一般包括字符库函数,数学函数,目录函数,进程函数,诊断函数,操作函数等。函数是理解面向过程和面向对象的切入点...

C语言 返回值是干什么用的
函数的返回值是指函数被调用之后,执行函数体中的代码所得到的结果,这个结果会通过return语句返回。函数可以有返回值,也可以没有返回值。对于没有返回值的函数,功能只是完成一个操作,应将返回值类型定义为void,函数体内可以没有return语句,当需要在程序指定位置退出时,可以在该处放置一个。

C语言 函数返回值是什么?
函数的值(或称函数返回值)是指函数被调用之后,执行函数体中的程序段所取得的值,可以通过return语句返回。return语句的一般形式为:return 表达式;或者:return (表达式);例如:return max;return a+b;return (100+200);函数中可以有多个 return 语句,但每次调用只能有一个return 语句被执行,所以...

c语言中main函数会返回值吗?
综述:void main实际上 也会返回,不过是默认的0,而int main可以自己选择返回什么值。void main即为主函数无返回值,不用写return语句;在main之前写void或是int之类表示类型的,写上它就要在主函数结束时写return 0;但写在学习c时要求不是很严格,光写main()也是可以的,但如果学习c++时就要严格些...

c语言中return是什么意思
当函数执行到 return 语句时,它会立刻停止执行,返回后面的值给调用者。如果函数没有返回值,则可以省略 return 语句。另外,在 main 函数中使用 return 语句时,其返回值将会作为整个程序的退出状态,0 表示程序执行成功,非 0 表示程序执行失败。在 C 语言中,return 语句可以返回各种类型的值,包括...

C语言中return的作用是什么,能具体点吗
return 表示把程序流程从被调函数转向主调函数并把表达式的值带回主调函数,实现函数值的返回,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。 如果函数执行不需要返回计算结果,也需要返回一个状态码来表示函数执行的顺利与否(...

C语言main函数需要返回值吗?
按标准来说,C的main函数是需要有返回值的。标准中main函数返回类型是int的,所以需要一个返回值。但是由于历史原因,很多地方可以看到没有返回值的main。比如直接main()或者说void main() 但是这样一般编译器也不会认为错误,不过建议还是写标准的C的main函数,最好有一个返回值,0表示正常退出。

C语言中Return 0是什么作用
表示函数的返回值,可以根据需要返回不一定是0,一般函数的返回值是整数时,对返回值没有什么要求可以写return 0,比如 :int main()int i;if(number<=1) return 0;for(i=2;i<=10;i++) 说明main 需要返回一个int型的数。我们用return返回一个值,也就是说我们希望那个函数返回一个什么结果,...

C语言中函数类型和返回值类型必须一致么
似乎没有“函数类型”一说。函数的返回值类型是定义函数时确定的,函数的返回值的类型须与定义的函数返回值类型兼容,并不要求完全一致,比如定义的返回值类型是int,可以在函数中返回char型、float型、double型等,但都被自动强制或截断(编译时会有精度损失提示)为int型;不兼容的返回值就会过不了编译...

寒亭区18233665041: c语言中函数能返回一个数组吗 -
守季醋酸: 在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组. 在大多数情况下,一维数组和一维指针是可以通用的.比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回.如出错,返回空指针NULL. 代码可以写成如下形式: int *int_array_create(int n)//参数n为数组元素个数 { int *r; if(n<=0) return NULL;//参数错误 r = (int *)malloc(sizeof(int)*n);//申请内存空间,大小为n个int长度. return r;//返回得到的整型数组的指针. }

寒亭区18233665041: C语言中函数的返回值可不可以是数组,如果可以应该怎么设置参数?请高手回答!!! -
守季醋酸: 可以的,用指针做返回值 int * array(int *a){ for(i=0;i

寒亭区18233665041: c语言自定义函数的返回值可以是数组吗 -
守季醋酸: 不可以,不过你可以用指向数组的指针

寒亭区18233665041: 请问在C语言中数组可以作为返回值吗 -
守季醋酸: 返回数组是不行的(用malloc分配倒是可以但不安全),但你的要求却可以达到,那就是用指针 比如,输入a,返回b和c: void fun(int a, int *pb, int *pc) { *pb = a - 1; *pc = a + 1; }int main() { int a = 1; int b, c; fun(a, &b, &c);//输入a返回b=a-1,c=a+1两个结果 printf("a=%d,b=%d,c=%d",a,b,c);//输出结果是“a=1,b=0,c=2” return 0; }

寒亭区18233665041: c++中,函数的返回类型可以是除了数组和什么的任何类型 -
守季醋酸: 【正确答案】 函数【原话】 C++中,函数返回类型可以是C++中除【函数、数组】类型之外的任何一个合法的数据类型,包括普通类型、指针类型和引用类型等.【说明】 C++中,函数定义的一般形式如下: 返回类型 函数名(参数表列) ...

寒亭区18233665041: C语言中,整个数组可以作为函数的返回值吗? -
守季醋酸: 你好,返回数组名返回的只能够是数组在内存空间中的首地址位置 建议楼主可以建立全局数组,这样就可以在局部函数中修改数组的值了 有不懂的可以追问~

寒亭区18233665041: c语言中能不能定义函数数组 -
守季醋酸: 函数不可以定义为数组,可以用函数指针来操作. 1.函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表). 例如: double add(double a,double b){} double sub(double a,double b){} double mul(double a,double b){} ...

寒亭区18233665041: c语言中如何使返回值为数组 -
守季醋酸: 1、注意C/C++不能直接返回一个数组.这是由于在C/C++中,数组不是一种类型,因此不能被直接返回. 2、在C/C++中,一般有两种方法来返回一个数组. 第一种方法: 返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数...

寒亭区18233665041: c语言怎么返回字符串数组? -
守季醋酸: C语言返回值不支持返回数组,不过可以通过返回指针类型,用以替代数组.在C语言中,数组大多数时候是可以用指针替代的.不过需要注意的是,不能够返回在函数内部定义的局部变量数组,因为一旦函数退出,局部变量就会被释放,导致数组指针无效. 可以返回以下几种: 1 全局变量,或者全局变量空间内的一个地址. 2 静态局部变量,或者静态局部变量内部的一个地址. 3 从参数传入的数组/指针变量,或者在其上做的合法偏移. 4 在数组内部动态申请的空间首地址.

寒亭区18233665041: c语言返回值具体是指什么? -
守季醋酸: 子函数的返回值,main主函数也是有返回值的,但是一般用不到都忽略掉了,一般来说的返回值就是子函数的返回值.当需要一个函数去处理数据时,如求平方,这时候求平方后的值可以有两种方法表达 1、以值的形式返回给你,即return x,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网