C++学习日记(1)

来源:互联网 发布:淘宝怎么做推广 编辑:程序博客网 时间:2024/05/17 05:15

数组

声明数组的方法

//这样是错误的!double array0[];//正确!如果不写明数组的大小,那么数组的大小就是初始化时,数据的个数,超出边界的部分为其他值,貌似是double类型的最小值double array1[] = {10, 20, 30, 40};//正确!所有值没有被初始化,都为int的最小值(-858993460)int array2[10];//正确!初始化了,所有值为0int array3[5] = {};//正确!初始化了,前两个值为10,20,后面三个值为0int array4[5] = {10, 20};

数组与指针

声明完数组后,数组名其实就是一个指针变量,比如声明了一个整形数组array,那么array就是一个指向整型类型的指针(int*),cout打印出来就是个地址,一串16进制数字,而且因为声明的是整型数组,地址之间以4递增,(int占4位),并且每一次运行地址都不一样。
这里写图片描述

把数组作为参数传递

将数组作为参数传递总共有三种方式,分别是:

//c++中的数组不能像java中那样arr.length获取到数组大小,因此只能传入一个sizeint getAvg1(int arr[], int size);//这种方式感觉有点2int getAvg2(int arr[4]);//上面说到数组名实际上就是个指针,因此传入一个指针就是传入一个数组。int getAvg3(int* p, int size);

在方法体里面,我们能得到的参数类型表面上看有两种形式,int arr[]int*。但实际上,不管是那种形式,本质上都是一样的,我们可以用不同的方式对他们进行取值。

arr[1], arr[0]  //这是众所周知的方式*arr            //等价于arr[0]*(arr + n)      //等价于arr[n]

把数组最为函数返回值返回

c++不能返回一个数组类型的值,但是可以返回一个指针,因此,如果我们想要让函数返回一个整形数组,那么我们可以让它返回一个整型指针。

int* getTenNumber() {    static int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};     return arr;}

以上方法是没有问题的,你可能会注意到,static关键字,为什么需要加一个static来修饰arr数组呢,因为c++不支持将一个函数的局部变量的地址返回到函数外面,可以这样理解,当执行到这里函数时,需要分配一个空间,但一般情况下,函数内的局部变量,当函数return结束时,也会随着释放,因此分配给arr的空间会随着函数结束而释放掉,因此之前存储在这些空间的数据都丢失了,因此加上static关键字,让它变成全局的变量。

或者,可以在方法外面写一个数组,然后传进来,也是可以的。

0 0