C/C++中一维与多维数组
来源:互联网 发布:sql语句替换字段内容 编辑:程序博客网 时间:2024/06/03 21:53
一、一维数组
首先介绍一下一维数组
一维数组的声明:int a[10];
一维动态数组:
int *a;int n = 10;a = new int[n];
delete []a;
一维数组的初始化:
int a[10] = {0};
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int a[10] = {}; //C++11新增,默认初始化为0
int a[10] {0,1,2,3,4,5,6,7,8,9}//C++11中可以省略等号
int a[] = {0,1}//数组长度自动计算
一维数组作为函数参数:void fun(int a[]) 或者 void fun(int *a)
一维数组名通常情况下是一个常量指针,指向数组的第一个元素,除了以下两种情况:
1、sizeof(a) 返回的是整个数组a的长度,而不是指向数组的指针长度。
2、&a 产生的是一个指向数组的指针,而不是一个指向常量指针的指针。
下标引用:
除了优先级以外,下标引用与间接访问完全相同。
array[index] 与 *(array + index) 完全相同。
2[array] 与 *(2 + array) 与 array[2] 效果一样
二、多维数组
多维数组的声明:int a[6][10];
多维数组的初始化:
int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}};
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4] = {{1,2,3,4}, {1,2}, {1}}//多维数组中,只有第一维才能自动计算长度,其他的维的长度必须显式写出。
多维动态数组:
int **p;int n = 2;//行数int m = 3;//列数p = new int*[n];
for(int i = 0; i < n; i++){ p[i] = new int[m];}
<span style="font-family: Arial, Helvetica, sans-serif;">//多维动态数组的释放</span>
for(int i = 0; i < n; i++){ delete [] p[i];
}delete []p;
多维数组作为函数参数:
void fun( int (*a)[10] );
void fun( int mat[][10] );
void fun( int **mat );//不可以
n维数组数组名:指向第1个元素的指针,第1个元素是一个(n-1)维的数组(理解为n维数组的第一行)。
int a[3][4];
a + 1;//代表a数组的第2行,代表一个指向包含3个元素的数组的指针
*(a + 1);//代表指向a的第2行的第1个元素的指针
*(a + 1) + 2;//代表a的第2行的第3个元素
下标引用:
a[n][m] 与 (*(a + n) + m) 与 *(a[n] + m) 效果一样
三、数组指针与指针数组
数组指针:指向数组的指针
数组指针声明:
int a[10];int *pa = a;int b[3][10];
int (*pb1)[10] = b;//pb1是一个指向包含10个元素的整型数组的指针
pb1++;//pb1指向了b的下一行
<span style="font-size:14px;">int *pb2 = &a[0][0];//pb2是一个指向a[0][0]的指针int *pb3 = a[0];//同上pb2++;//pb2指向a[0][1]pb3++;//同上</span>
指针数组:存放指针的数组
指针数组声明:
int a[10] = {0,1,2,3,4,5,6,7,8,9};
int *api[10] = {&a[0], &a[1], &a[2], &a[3]};//其余的初始化为空指针
cout<<api[0]<<endl;//输出了a[0]的地址cout<<*api[0]<<endl;//输出0api[0]+=6;//api[0]指向了a[6]的地址cout<<api[0]<<endl;//输出a[6]的地址cout<<*api[0]<<endl;//输出5
0 0
- C/C++中一维与多维数组
- C语言与多维数组
- C/C++ 多维数组与指针
- C语言中的多维数组与指针
- C语言多维数组与多级指针
- C语言多维数组与多级指针
- C语言多维数组与多级指针
- C语言多维数组与多级指针
- c/c++多维数组动态分配与释放
- C语言中的指针与多维数组
- 指针与多维数组(C++)
- C多维数组动态分配与释放
- C多维数组
- c.传递多维数组
- C语言----多维数组
- 图解c/c++多级指针与“多维”数组
- c/c++多级指针与“多维”数组
- 图解c/c++多级指针与“多维”数组
- Activity(一)
- HBase1.1.4搭建笔记
- 单例模式 Singleton Pattern
- TensorFlow学习笔记之四——源码分析之基本操作
- 如何在MySQL中设置外键约束以及外键的作用
- C/C++中一维与多维数组
- 图片轮播所遇到的问题
- 上传文件并读取excel总结
- 安卓动画
- Arduino携手LCD1602 向世界问好“hello World!”
- NavigationContorller跳转问题
- Spring对ORM的支持之集成Hibernate3
- 机器学习中正则化方法简介:L1和L2正则化(regularization)、数据集扩增、dropout
- Swift UIButton用法