C/CPP

为何C语言函数可以返回struct

struct可由多个数据类型构成,初步看起来应该类似数组,变量本身是一个指向首字节的指针,无法直接通过此指针赋值struct,在函数中声明为自动变量时,也无法返回此指针所指向的值。

但事实上就并非如此,struct之间可以直接赋值,使用指针指向其地址时需要使用”&”,函数中声明为自动变量时可以直接return其值。

那struct变量本身到底是何?

写了这样一个东西,运行后瞬间明白:

struct变量就和基本类型,int, char等一样,直接指向其值,而且struct有多少字节,那个值就有多少字节。

也就是说,我们声明一个struct类型时,就是的的确确等于声明了一个确定大小的类型,就和int, char等基本类型一致。

既然是指向值,有确定大小,而且不是地址,那么就可以解释为何可以直接赋值以及可以被函数return了。

 

返回数组: