#include<iostream>
using namespace std;
// 1、数组声明方式:
//
// 1.1 只声明:
// 数据类型 数组名[数组长度]:int arr[10];//里面的元素未初始化,显示的结果不确定
//
// 1.2 声明的时候初始化:
//
// 1.2.1 数据类型 数组名[数组长度] = {元素1,元素2,元素3,元素4,元素5};
// 1.2.2 数据类型 数组名[] = {元素1,元素2,元素3,元素4,元素5};//自动推断有多少个
// 1.2.3 大括号中元素个数小于数组长度,会自动补全,数值类型的补全为0,string补完之后,输出显示为空
// 1.2.4 数据类型 数组名[数组长度] = { }; // 把全部的元素初始化为0。
// string类型的注意元素也要带双引号
//
// 注意:C90规定必须用常量表达式指明数组的大小,C99允许使用 整型 非常量 表达式。
// 经测试,在VS中可以用用 整型 非常量 表达式,不能用变量;
// 但是,Linux中还可以用变量。
//
// 常量表达式是表达式是由常量组成:int zen = 1000+200
// 非常量表达式是指表达式由非常量组成 :int yel = zen+200
//
//
// 2、数组的使用:
// 1.1 通过访问数组的下标来使用数组元素:数组名[下标]
// 使用数组元素就是在中括号里面加下标 num[3] = 7,和使用变量一样
// 注意:
// 数组下标必须是整数,可以是常量,也可以是变量,还可以是结果是常量的表达式
// 数组下标从0开始,最后一个元素是长度减一 .例如 int num[5]
// 开始元素是num[0],尾元素是num[4]
// 1.2 还可以用循环使用数组 赋初值
// 3、数组内存占用:
// 3.1 数组在内存空间的占用是连续的,sizeof(数组名)可以显示数组所占内存空间
//
// 4、清空数组:
// 用memset()函数可以把数组中全部的元素清零。(只适用于C++基本数据类型)
// 函数原型:void *memset(void *s, int c, size_t n);
// 第一个参数:数组名
// 第二个参数:填写的数字
// 第三个参数:整个数组占用内存空间的大小
// 5、拷贝数组:
// 用memcpy()函数可以把数组中全部的元素复制到另一个相同大小的数组。(只适用于C++基本数据类型)
// 函数原型:void* memcpy(void* dest, const void* src, size_t n);
// 第一个参数:目标数组名
// 第二个参数:被拷贝的数组名
// 第三个参数:整个数组占用内存空间的大小
// 注意,在Linux下,使用memcpy()函数需要包含头文件#include <string.h>
//
//
int main(void) {
int name[5] = { 1,2,3,4,5 };
cout << sizeof(name) << endl;
int name1[4] = {};
memcpy(name1, name, sizeof(name1));
for (int i=0; i < sizeof(name1) / sizeof(int); i++) {
cout << name1[i] << endl;
}
return 0;
}