数组与文字

Posted yangyangjia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组与文字相关的知识,希望对你有一定的参考价值。

1.数组

1.1定义数组

数据类型 数组名[常量表达式1][常量表达式2]...;
int x[5];    //一维数组
int y[2][3];    //二维数组

sizeof 运算符
sizeof (数据类型名)         sizeof (int)    //结果为4字节
sizeof (表达式)            sizeof (2+3.5)    //结果为8字节

 1.2访问数组元素

数组变量名 [下标表达式1][下标表达式2]...        //0是下界,N-1是上界

int x[3];    x[0]=10; x[1]=20; x[2]=30;
int y[2][3];        //二维数组y[0][0]到y[1][2]

数组的输入和输出使用循环语句来控制

1.3数组的初始化

int x[3] = {2,4,6};
int x[] = {2,4,6};
double [][3] = {1,2,3,4,5,6};    //部分初始化,未赋值自动为0

常用的数组处理算法有求和、平均值、最大/小值

2指针变量间接访问数组元素

int x[6] = {1,2,3,4,5,6};
int *p;
p = &x[0];
cout << *p;        //结果:1
p = &x[1];        //结果*p = 4

p = &x[0];        //p指向数组x的首地址
p = x;

2.1指针的算术运算

统一成p+=1,按一个单位加减

指针变量与整数进行加减:

p+n  的结果仍为T类型,地址值= p的地址+n*sizeof(T)

同类型指针变量的加减:

p1-p2  结果:int型  p1-p2 = (p1-p2)/sizeof(T)

2.2指针的关系运算

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

for(p = &x[0];p <= &x[5];p++)
    cout <<*p<<"";

取内容:

int x[6] = {1,2,3,4,5,6},*p = x;    //首先把数组x的首地址赋给p
*p  *(p+1) ... *(p+5)
p[0]  p[1]  ...  p[5]

 3动态内存分配

 3.1指针变量内存分配

指针变量名 = new 数据类型(初始值);
delete 指针变量名;

int *p;
p = new int;            //int *p = new int(10);
*p = 10;

3.2二维数组的动态分配

指针变量名 = new 数据类型 [整数表达式]; 
delete []指针变量名; 
int *p = new int[5]; 
*(p+1) = 10;

4字符类型

字符串常量:双引号括起来,如"China"、"中国"

转义字符: 换行、 制表符、‘单引号、"双引号、\反斜杠 等等

字符数组:

char str[10] = {c,b,d};
char str[10] = "China";

//字符数组的输入和输出
char str[10];
cin >>str;

5中文处理

C++中支持“中”,不支持‘中’。

基于Unicode编码的中文处理:UTF8、UTF16、UTF32 ,c++采用utf16编码。

宽字符类型:关键字:wchar_t  例如,L"中国abc"

宽字符串的输入输出:wcout、wcin   需要先转为GBK编码,再转为utf16

注:计算机内部对数组的管理和访问是通过指针(即内存地址)来实现的。

以上是关于数组与文字的主要内容,如果未能解决你的问题,请参考以下文章

上下文类型 'Any' 不能与数组文字 Swift 3 一起使用

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

JavaScript 代码片段

CSS代码片段

CSS代码片段