Part 1.数组总介绍

(1)数组的定义

定义:数组是一组相同类型元素的集合,注意数组元素个数不能为0

一维数组:一维数组是一块连续的空间

创建:type arr_name[常量值];  

常量值用于指定数组的大小/个数

int math[20];

const int N = 20;

int math[N];

(2)数组的初始化

数组的完全初始化:int arr[5] = {1, 2, 3, 4, 5};

不完全初始化:int arr[5] = { 7 };剩余元素默认初始化为0

如果数组初始化了,数组的大小可以省略,数组的大小会根据初始化的内容自动确定

(3)数组元素的访问

数组的下标从0开始,[ ]为下标引用操作符

数组元素的打印(利用for循环)小心越界访问

sizeof(数组名),计算数组总大小,单位为字节

cout << sizeof(arr) << endl;

sizeof(数组名)/sizeof(第一个元素),计算数组元素个数

sizeof(arr)/sizeof(arr[0])

范围for语法C++11版本

for( 类型 变量名 : 数组名) //类型与数组类型相匹配,遍历数组中所有元素

{语句;}

编译时加入命令:-std=c++11

int arr[5] = {1, 2, 3, 4, 5};

for(int e : arr)

{

        cout << e << " ";

}

把数组arr的内容依次放到e中,但是无法通过e改变arr数组的值

Part 2.auto关键字

让编译器自动推导变量的类型

auto a = 10;//a的类型自动推导为int

Part 3.memset设置数组内容

memset用于设置内存,将内存中的值以字节为单位设置成想要的内容,需要头文件<cstring>

函数原型

void * memset( 指针-要设置的内存块的起始位置,要设置的值,设置的字节个数)

--数组名就是数组首元素的地址

char arr[] = "hello world"

(1).
memset(arr,'x',5);
cout << arr << endl;

结果:xxxxx world

(2).
memset(arr + 2,'x',5);
cout << arr << endl;

结果:hexxxxxorld

int arr[5] = {1,2,3,4,5};

memset(arr, 1, 20);
for(int e : arr)
{
    cout << e << " ";
}

结果:16843009 16843009 16843009 16843009 16843009

用于把整型数字修改为非0数值会出错

Part 4.memcpy 内存拷贝

函数原型

void * memcpy(目标空间起始地址,源数据空间起始地址,拷贝数据的字节个数)

int a[10] = {1,2,3,4,5,6,7,8,9,10};
int b[10] = {0};

//b = a 错误,数组名为地址,地址为常量,不可被赋值

memcpy(b, a, 10 * sizeof(int));

for( int e : b)
{
    cout << e << " ";
}

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐