C语言中,return语句怎么样返回一个数组
首先,C/C++只能返回数组的指针而不能返回整个数组。即使返回数组的指针,但如果函数中的数组是自动性质,那将是危险的。这是比较正宗的表述。
如果确实需要从函数中返回自动性质的数组的全部元素值,有没有办法呢?
有。由于C/C++是允许返回结构体的,可以定义一个结构体模板,把数组作为成员安排在其中,函数中临时声明结构体变量,操作其中的数组;完毕后返回结构体变量,在主调函数中用同类型的结构体变量接收就可间接实现“返回一个数组”。
举例代码如下:运行结果如下:
c语言void函数能不能返回数组
这个问题有两个方面: 1.如果是局部变量,并且是自动变量,那么返回后,它们占用的空间就被释放了,也就是说,返回后,它们的值不再具有可用性。 2.返回数组的首地址,也就相当于返回了数组,因为数组元素是顺序存储的。
C语言中返回数组元素个数
sizeof(a)的值是在编译时刻确定的,所以如果你在程序里面这样来做:
int a[] = {1, 2, 3, 4, 5};
int len = sizeof(a)/sizeof(a[0]);
那么没有问题,可以正确的得出数组的长度,因为这个时候在编译时刻可以很容易的知道a有5个元素。
但是你把int a[]作为参数传递到函数里面,编译时刻无法得知你要传送什么样的参数进去,所以这个时候实际上是把a当作一个int 指针处理的,那么sizeof(a)实际上是指针的大小,这个在32位系统上是4,而a[0]是一个整数,sizeof(a[0])在32位系统上的的大小也是4,所以就是1了。