3.5数组-学习笔记
来源:互联网 发布:ubuntu搭建网络电话 编辑:程序博客网 时间:2024/06/06 02:57
3.5数组
数组大小确定不变,不能随意向数组中添加元素。不清楚元素个数使用vector
1. 定义和初始化内置数组
定义:
Int a[b]; 其中b必须是一个常量或常量表达式
2. 访问数组元素
3. 指针与数组
- 编译器把数组转换成指针
- 数组元素也是对象,对数组使用下表运算符得到该数组指定位置的元素,对数组元素使用取地址符就能得到指向该元素的指针
string num[]={"one","two","three"}string *p=&num[0]; //指针p指向num的第一个元素
- 使用数组元素的名字时,编译器自动将其替换为一个指向数组首元素的指针
string *p2=num; //等价于p2=&nums[0]
- 下标和指针
int a[]={0,1,2,3,4};int *p=&a[2]; //p指向索引为2的元素int k=p[1]; //p[1]等价于*(p+1),即a[3]表示的那个元素int l=p[-2]; //p[-2]等价于*(p-2),即a[0]表示的那个元素
与标准库类型string和vector区别:内置的下标运算可以处理负值,但结果地址必须指向原来的指针所指同一数组中的元素(或同一数组尾元素的下一位置)。而标准库类型下标必须是无符号类型。
4.C风格字符串
- 字符数组不以空字符作为结束,不能使用C标准库string函数(需要定义头文件:#include )
char ca[]={'a','b','c'}; //该字符串不是以空字符结束,不能使用c风格字符串函数
- 直接用大小于符号比较C风格字符串,实际比较的是数组首元素的指针即地址大小(比较字符串需要调用strcmp函数)
if(strcmp(c1,c2)<0) //c1<c2为真,当两个字符串相等,strcmp返回0,c1>c2返回正值,c1<c2返回负值。
阅读全文