栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】数组

文章目录
  • 数组
    • 数组结构和基本要素
    • 语法
    • 初始化一维数组
    • 数组操作实例

数组

数组是一个变量,由数据类型相同的一组元素组成,是内存中的一串连续的空间。

数组结构和基本要素
  • 标识符:数组名称,用于区分不同的数组
  • 数组元素:向数组中存放的数据
  • 元素下标:对数组元素进行编号
  • 元素类型:数据元素的数据类型
语法

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 
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 
#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循环简化
#include 
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 
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;
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989910.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号