一、一维数组
数组声明时应指出以下三点:
- 存储在每个元素的值的类型
- 数组名
- 数组中的元素个数
通用格式:typeName arrayName[arratSize]
初始化:
- 只有在定义数组时才能初始化
int a[4] = {1,2,3,4};
int b[4];
b[4] = {1,2,3,4} //错误
b = a; //错误
- 初始化数组时([])内可以为空
int a[] = {1,2,3,4,5};
- 初始化时可以只对部分初始化,未初始化的值将被设置为0。
- 数组的下标从0开始,所以数组的最后一个元素为a[N - 1]。
** 用不同方式访问数组**
#include <iostream>
using namespace std;
int main()
{
int a[] = {1,3,5,7,9},i,*p;
for(i = 0;i < 5;i++) //下标访问
{
cout << "a[" << i << "]=" << a[i] << '\t' ;
}
cout << endl;
for(p = a,i = 0;i < 5;i++)//指针变量下标访问
{
cout << "a[" << i << "]=" << p[i] << '\t' ;
}
cout << endl;
for(i = 0;i < 5; i++) //指针方式访问
{
cout << "a[" << i << "]=" << *(a + i) << '\t\;
}
cout << endl;
for(p = a;p< a + 5;p++)//指针变量间址访问
{
cout << "a[" << p - a << "]=" << a[p - a] << '\t';
}
cout << endl;
}
二、二维数组
表达式:类型 数字名 [表达式1][表达式2]
- 第一维是行,第二维是列。
int a[2][3] = {{1,2,3},{4,5,6}};
int a[2][3] = {1,2,3,4,5,6};
- 可以只对部分元素初始化
int x[2][3] = {{1,2},{3}}
- 可以省略高数组的最高维长度说明
int ad[][3] = {1,2,3,4,5,6};
int at[][2][3] = {1,2,3,4,5,6,7,8,9,10,11,12};
但不能写成
int ad[2][] = {1,2,3,4,5,6};
int at[2][][3] = {1,2,3,4,5,6,7,8,9,10,11,12};
三、动态存储
1. 动态存储 :根据需要在程序运行时建立和撤销对象。
2. new 和 delete 操作符
一般语法形式:
指针变量 = new 类型
delete 指针变量
如:
int *p1 = new int(0);
char *p2 = new char;
float *p3 = new float;
//...
delete p1;
delete p2;
delete p3;
申请动态数组,释放空间用delete[]操作:
int *p4 = new int [4];
delete []p4;
四、字符串
1. 用字符数组存放字符串
(1)逐个字符对数组元素赋初始值
char str1[10] = {'S','t','u','d','e','n','t'};
(2)用串常量初始化
char str2[10] = {"Student"};
char str3[] = {"Student");
char str4[] = "Student";
注意:C++对串常量自动添加结束标志’\0’,所以str2[7] = ‘\0’,str2的长度为8。
2.字符串处理函数
头文件:cstring(string.h)
函数 | 说明 |
---|---|
strlen(Str) | 计算有效字符的个数,空字符不包含在内 |
strcpy(Des,Src) | 串复制,将Src所指向的字符串复制到Des中 |
strcat(Des,Src) | 串连接 |
strcmp(Str1,Str2) | 串比较。以字典顺序方式比较两个字符串。若相等,返回0;若Str1大于Str2,则返回正数;若Str1小于Str2,则返回负数。 |