数组与文字
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
注:计算机内部对数组的管理和访问是通过指针(即内存地址)来实现的。
以上是关于数组与文字的主要内容,如果未能解决你的问题,请参考以下文章