首页 > 代码库 > C++学习笔记(三):数组
C++学习笔记(三):数组
数组声明时必须指定该数组的长度:
1 int a[20];
这个时候已经分配了内存,但没有初始化,所以具体的值是不确定的;
初始化:
1 int a[3] = {1, 2, 3};2 int a[3] = {1};//指定第一个数字为1,后面的使用0填充;3 int a[100] = {0};//指定所有的元素都是用0填充;
标准方式:
1 int a[100];
数据保存在栈内存中,在声明时会分配内存,在其作用域结束时会由系统自动释放,不需要额外处理;
指针方式:
1 int* value = http://www.mamicode.com/new int[100];
数据保存在堆内存中,该内存块会一直存在,就算程序关闭也会继续存在,需要手动释放该内存;
1 delete []value;
二维数组初始化:
1 int value[9][9]; // value[i][j]的值不定,没有初始化 2 int value[9][9] = {{1,1},{2}}; //value[0][0,1]和value[1][0]的值初始化,其他初始化为0 3 4 int (*value)[n] = new int[m][n]; 5 delete []value; // n必须为常量,调用直观。未初始化 6 int** value = http://www.mamicode.com/new int* [m]; 7 for(i) value[i] = new int[n]; 8 for(i) delete []value[i]; 9 delete []value; // 多次析构,存储麻烦,未初始化10 11 int * value = http://www.mamicode.com/new int[3][4]; // 数组的存储是按行存储的12 delete []value; // 一定要进行内存释放,否则会造成内存泄露
多维数组初始化:
1 int * value = http://www.mamicode.com/new int[m][3][4]; // 只有第一维可以是变量,其他几维必须都是常量,否则会报错2 delete []value; // 一定要进行内存释放,否则会造成内存泄露
数组初始化的大括号后面要加“;”来表示结束。
多维数组在内存中存储时是按照最低维连续的格式存储的,如二维数组{{1,2},{3,4}}在内存中的位置是这样顺序的“1,3,2,4”
数组访问:
1 value[i][j];2 *(value[i] + j);//指针形式3 (*(value + i))[j];//指针形式
数组作为参数传递:
1 //一维数组2 void Func(int *value);3 void Func(int value[]);4 5 //二维数组6 //定义是 int **value;的传递7 void Func(int **value);8 //定义是 int (*value)[n] = new int[m][n];的传递9 void func(int (*value)[n]);
C++学习笔记(三):数组
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。