c++——3.数组、字符串(C风格字符串与std::string)

c++——3.数组、字符串(C风格字符串与std::string)
一、C++ 数组数组是固定大小、连续存储的相同类型元素的集合。1. 声明与初始化#includeiostreamintmain(){// 声明一个大小为 5 的 int 数组(未初始化,值是随机的)inta[5];// 直接初始化intb[5]={1,2,3,4,5};// 部分初始化,其余自动为 0intc[5]={1,2};// {1, 2, 0, 0, 0}// 全部初始化为 0intd[5]={};// C++11 列表初始化inte[5]{};// 同上// 自动推导大小intf[]={10,20,30};// 数组大小为 3// 字符数组charg[6]="hello";// 注意大小要容纳 '\0',否则不是合法 C 字符串charh[]="world";// 大小为 6,自动加 '\0'std::coutcstd::endl;std::couthstd::endl;system("pause");return0;}2. 访问与遍历#includeiostreamintmain(){intarr[5]={1,2,3,4,5};// 下标访问(从 0 开始,无越界检查)arr[0]=10;intx=arr[2];// 3// C++11 范围 for 循环for(intv:arr)std::coutv' ';std::coutstd::endl;// 传统 for 循环for(size_t i=0;i5;++i)std::coutarr[i]' ';std::coutstd::endl;for(inti=0;i5;++i)std::coutarr[i]' ';return0;}3. 数组名与指针数组名在大多数表达式中退化为指向首元素的指针。#includeiostreamintmain(){intarr[5]={1,2,3,4,5};int*ptr=arr;// ptr 指向 arr[0]// arr = ptr; // 错误!数组名是常量,不能赋值// 通过指针访问数组std::cout*(ptr+2);// 输出 3std::coutptr[2];// 输出 3,等价于 *(ptr + 2)system("pause");return0;}注意:sizeof(arr) 在定义数组的作用域内返回整个数组的大小(如 5 * sizeof(int)),一旦退化为指针,sizeof(ptr) 只返回指针本身大小。函数参数中的数组声明实际是指针:#includeiostreamvoidfunc(intarr[]