数组是一个变量,由数据类型相同的一组元素组成,是内存中的一串连续的空间。
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]{};(如果不进行初始化,那么每个元素的值是不可控的)
//打印斐波那契数组并输出和以及平均值
#include <iostream>
using 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 <iostream>
#include <ctime>
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);
- 1
- 2
- 3
- 4
//clock()的函数原型 //返回进程启动到调用该函数经理的CPU时钟计时单位-以毫秒为单位 //一般用于计算两次操作的时间间隔 clock_t clock(void);
- 1
- 2
- 3
- 4
//for循环简化
#include <iostream>
using 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;
}
}
#include <iostream>
using 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;
}
}