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
- c++primer学习日记 1
- c语言学习日记1
- 2015-4-1C语言学习日记
- Linux C 学习日记
- C菜鸟日记(1)
- 线程学习日记(1)
- 线程学习日记(1)
- java学习日记(1)
- Android学习日记(1)
- Android学习日记(1)
- C++学习日记(1)
- JAVA学习日记(1)
- kettle学习日记(1)
- WebTech学习日记(1)
- python学习日记(1)
- GPUImage学习日记(1)
- AR学习日记(1)
- C++学习日记(1)
- 软考之标准化和知识产权
- 【PA2014】【BZOJ3718】Parking
- SQL查询之模糊查询
- Hibernate与MyBatis
- emacs 24.4.1 使用company mode智能提示C++程序
- C++学习日记(1)
- 新闻的本质之我见
- A017-布局之FrameLayout
- AWS中Centos创建后登录以及修改密码配置
- Ubuntu 14.04 13.10修改字符界面分辨率,字体大小
- tcpdump安装以及基本使用
- Leetcode 1:Two Sum
- SqlDataReader和oledbDataReader和DataReader区别
- 20151004的NOIP模拟赛