c语言中返回值和返回指针的问题
当前位置:以往代写 > C/C++ 教程 >c语言中返回值和返回指针的问题
2019-06-13

c语言中返回值和返回指针的问题

c语言中返回值和返回指针的问题

int  testA  (void)
{
int  b  =  1  ;
return  b;
}
char  *  testB  (void)
{
char  str[]  =  "abc" ;
return  str;
}
int  main()
{
printf(  "  the  value  of  testA  is  %d  \n",  testA()  );
printf(  "  the  value  of  testB  is  %c  ",  *(  testB()  )  ) ;
}

对付返回值的环境:

testA与main函数同在栈区,testA竣事时C++建设姑且变量,然后将返回值复制给该姑且

变量。

printf( "  the  value  of  testA  is  %d  \n", testA())时输出的是该姑且变量的值,testA中的b已经不存在。

对付返回指针的环境:

这是最巨大的部门。首先,对付上面的景象:返回一个数组的首地点,由于是返回char  *

范例,所以C++会首先建设一个char  *范例的姑且变量,再把该数组的首地点赋给姑且变量;

函数竣事后该数组也就被销毁,这就意味着姑且变量指向了一个“未声明的地点”,幸运的环境下,这段内存临时还没有被其他的数据所包围,因此还能输出正确的内容。

在testB内里,假如换成char*  str="abc";return  str;  由于这时str指向的是全局数据区的一段内存地点,所以函数竣事后姑且变量也指向该地点,所以编译器不会提出告诫。但这样的要领是不推荐的。

返回引用:

这中环境的效率最高,它直接返回一个工具,不发生返回值的副本。但同时也要留意制止返回局部引用的环境。

    关键字:

在线提交作业