数组声明
数组声明时,我们可以指定其大小,也可以不指定,但后一种情况必须初始化,编译器通过初始化可以确认该数组大小;
1 | int a[10] = {1,2,3,4,5}; //正确,数组大小是10 |
数组大小
1 | int a[] = { 0,1,2,3,4,5,6,7,8,9,2,3,4,5,6}; |
数组形参
- 当数组作为形参时,有两个特殊的性质:不允许拷贝数组、数组将会转化为指针,这也就意味着:当数组已经作为形参传入函数后,已经不能再使用上述sizeof函数的方式来计算数组元素个数了;那么我们此时就必须考虑元素个数的传入问题;
1 | void print(const int*);//正确,但无法获知当前数组的元素个数 |
- 数组作为形参时实际是一个指针,那么如果const修饰该指针那么也就是一个底层const,即无法修改数组中元素;
返回数组
返回指针并不困难,因为指针指向某个地址,地址中存储某个value,但是返回数组却略有不同,因为数组v有大小,那么返回时我们必须考虑同时返回数组的大小,此外,数组不允许拷贝,也就是说我们必须返回数组的指针,这两者导致了在实际操作上存在困难;但是C++还是提供了相应方案,主要分为以下三种:
- 使用类型别名;
- 声明一个返回数组指针的函数
- 使用尾置返回类型
- 使用decltype