【C++ Primer】第4章 数组和指针
2013-08-02 18:20
330 查看
第4章 数组和指针
数组
数组的长度是固定的数组是由类型名、标识符和维数组成的符合数据类型,除了引用之外,数组元素可以是任意的类型
数组的维数必须用值大于等于1的常量表达式定义:整形字面常量、枚举类型,或用常量表达式初始化的整型const对象
非const变量和直到运行期才知道其值的const变量都不能用作定义数组的维数
在函数体外定义的内置数组,元素初始化为0,函数体内定义的内置数组,元素无初始化
无论在哪里定义,如果元素是类类型,则自动调用默认的构造函数进行初始化,如果没有默认构造函数,则必须为该数组提供显式初始化
字符数组末尾没有空字符,字符串字面值包含一个额外的空字符。使用字符串来初始化新数组,末尾会加入空字符
char cal1[] = {'C', '+', '+'} //no null
char cal2[] = "C++" //null terminator added automatically
不允许数组直接复制和赋值
数组下标的正确类型是size_t
指针
取地址操作符&只能用于左值理解指针声明语句时,从右向左读
对指针进行初始化或赋值只能使用以下四种类型的值
Ø 0值常量表达式
Ø 类型匹配的对象的地址
Ø 另一对象之后的下一地址
Ø 同类型的另一个有效指针
int zero = 0;
const int c_ival = 0;
int *pi = zero; //error, pi assigned int value of zero
int *pi = c_ival; //ok, c_ival is const with compile-time value of 0
void*指针可以保存任何类型对象的地址,它表明该指针与一地址值相关,但是不清楚存储在此地址上的对象的类型
void*指针只支持几种操作:与另一指针的比较,向函数传递或返回void*指针,给另一void*指针赋值。不允许使用void*指针操作它指向的对象
C++允许计算数组或对象的超出末端的地址,但不允许对此地址解引用
string s = "123";
cout << s[10] << endl;
cout << &(s[10]) << endl; // 在VC6.0,这两个好像都可以
指针是数组的迭代器
指向const对象的指针必须具有const特性,const double *cptr; cptr是一个指向double类型const对象的指针,它指向的对象不可变,但cptr可变
把一个const对象的地址赋给一个普通的、非const对象的指针也会导致编译器错误
const int a = 1;
int* p = &a;
error C2440: 'initializing' : cannot convert from 'const int *' to 'int *'
不能使用void*指针保存const对象的地址,但const void*可以
允许把非const对象的指针赋给指向const对象的指针
dval = 3.14;
*cptr = 3.14; // error
double *ptr = &dval;
*ptr = 2.72
cout<<*cptr; // prints 2.72
不能保证指向const指针所指对象的值一定不可修改,将const指针理解为“自以为指向const的指针”
Attention:typedef不是文本扩展!
C风格字符串
char ca[] = {'C', '+', '+'};cout<< strlen(ca)<<endl;
strlen会从实参ca指向的内存空间开始搜索,知道遇到null为止,返回中间这段内存的字符个数
相关文章推荐
- 《C++ Primer 4th》读书笔记 第4章-数组和指针
- 【C++ Primer】摘记--第4章 数组和指针
- [C++ Primer 第4版]第4章 数组和指针
- c++ primer 第4章 数组和指针
- C++ Primer学习笔记---第四章 数组和指针
- C++ Primer 读书笔记 Chapter 4 数组和指针
- 第4章:数组和指针
- C++ Primer学习笔记2--c++中的数组和指针
- 再学C++ Primer(4)-数组和指针
- C++ Primer(四)数组和指针
- 《c++ primer》读书笔记--数组与指针
- C++ primer(七)--函数、C++的编程模块 函数指针 函数指针数组 typedef
- 【C专家编程】第4章 数组和指针并不相同
- C++ Primer 随笔 Chapter 4 数组和指针
- C++ primer 读书笔记系列——(3)C++中的数组和指针
- C++ Primer 学习笔记——第4章 数组和指针
- 再学C++ Primer(4)-数组和指针
- 第4章 数组和指针
- 重温《C++ Primer》笔记八 数组与指针的几个问题
- 《C++ Primer》 第04章 [ 数组和指针 ]