算法竞赛C/C++:数组-上
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 << " ";
}
更多推荐



所有评论(0)