- 数组
- 数组结构和基本要素
- 语法
- 初始化一维数组
- 数组操作实例
数组是一个变量,由数据类型相同的一组元素组成,是内存中的一串连续的空间。
数组结构和基本要素- 标识符:数组名称,用于区分不同的数组
- 数组元素:向数组中存放的数据
- 元素下标:对数组元素进行编号
- 元素类型:数据元素的数据类型
datatype array_name[size],其中size不允许是变量
初始化一维数组#define和const的区别
定义:为变量/数组分配内存空间,也可以为变量/数组指定初值,定义只有一个
声明:用于向程序程序表明变量/数组的类型和名字,定义也是声明
int nums[2]={1,2};✔ 后面的元素个数和声明的一致
int nums[2]={1};✔ 后面未初始化的元素,初始值为0
int nums[]={1,2};✔ 元素个数为2
int nums[]={};✘元素个数未知
数组操作实例C++11中的列表初始化新增了一些功能:
1.省略=号,即int nums[] {1,2};
2.大括号可为空,所有元素置零,float nums[100]{};(如果不进行初始化,那么每个元素的值是不可控的)
//打印斐波那契数组并输出和以及平均值 #includeusing namespace std; typedef long long ll; int main() { const int N = 20; ll nums[N]; nums[0] = 0; nums[1] = 1; ll sum = 0; long double avg; for (int i = 2; i < N; i++) { nums[i] = nums[i - 1] + nums[i - 2]; } for (int i = 0; i < N; i++) { cout << nums[i] << ","; sum += nums[i]; } cout << endl; avg = sum / 1.0 / N; cout << "Fibonacci的和为:" << sum << ",平均值为:" << avg << endl; }
//生成指定区间内的随机数 #include#include using namespace std; int main() { srand(time(NULL)); const int N = 10; int nums[N]; for (int i = 0; i < N; i++) { nums[i] = rand() % 100; //输出0-99之间的随机数 cout << nums[i] << ","; } cout << endl; }
关于time()和clock()的区别:
//time()的函数原型 //返回格林尼治时间(GMT)为标准,1970-1-1 0:0:0到此时经历的秒数 //time_t实际上是一个长整型:long long / __int64 time_t time(time_t * timer);//clock()的函数原型 //返回进程启动到调用该函数经理的CPU时钟计时单位-以毫秒为单位 //一般用于计算两次操作的时间间隔 clock_t clock(void);
//for循环简化 #includeusing namespace std; int main() { double nums[] = { 11, 12, 13, 14, 15, 16 }; int len = sizeof(nums) / sizeof(nums[0]); for (int i = 0; i < len; i++) { cout << nums[i] << endl; } for (auto num:nums) { cout << num << endl; } }
#includeusing namespace std; int main() { double nums[]{ 1,2,3,4,5,6,7 }; //方案1:直接进行数组名的赋值——数组名实际上是数组的首地址 //其实不是真正意义上复制 //double* copy_nums = nums; //方案2:数组元素进行逐个复制 const int SIZE_NUMS = sizeof(nums) / sizeof(nums[0]); double copy_nums[SIZE_NUMS]; for (int i = 0; i < SIZE_NUMS; i++) { copy_nums[i] = nums[i]; } //方案3:使用memcpy_s函数 //memcpy_s是memory copy safe的缩写,安全内存复制 double copy_nums1[SIZE_NUMS]; memcpy_s( copy_nums1, //要复制到的目标数组 SIZE_NUMS * sizeof(double), //复制到目标数组的字节数 nums, //复制的源数组 SIZE_NUMS * sizeof(double) //要复制的字节数 ); for (int i = 0; i < SIZE_NUMS; i++) { cout << copy_nums[i] << ',' << copy_nums1[i] << endl; } }



