大家好,今天小编关注到一个比较有意思的话题,就是关于c语言返回结构体的问题,于是小编就整理了3个相关介绍c语言返回结构体的解答,让我们一起看看吧。
C语言中,return语句怎么样返回一个数组?
首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。
如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?
有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。
局部变量会在栈内存销毁后消失,为什么可以返回结构体指针或临时对象呢?
因为函数的返回值并不会放在内存中,更不会当到栈中,而是放到了CPU内部的通用寄存器里面,具体是放在哪个寄存器,就要看那个CPU的架构了,X86的话,是放在了eax寄存器和edx寄存器中。
这样做90%是错误的。
1.指针是一个内存地址,当函数运行完毕就会释放局部变量,这个指针指向的地址就会出错,函数外面再访问这个地址就会出错。
2.结构。当函数返回会将局部变量赋值给你函数外的变量,然后就释放这个局部变量。例如std::string。
std::string test(){
std::string a=“abc”; //局部变量a
return a;}
void main(){
std::string b = test(); //变量b,函数返回时会将局部变量a赋值给b
printf(b.c_str()); //这里访问不会出错
golang怎么返回结构体?
可以直接返回结构体,也可以用指针(或者引用):
structabc{
inta;
intb;
charc;
}
voidfun(structabc&st)//通过引用改变实参
{
st.a=5;
}
到此,以上就是小编对于c语言返回结构体的问题就介绍到这了,希望介绍关于c语言返回结构体的3点解答对大家有用。