4.1.1 数组的定义和初始化
数组的维数必须用值大于等于1的常量表达式定义。非const变量以及要到运行阶段才知道其值的const 变量都不能用于定义数组的维数。
如:int staff_size = 27;
double salarise[staff_size ]; //error non const variable
显示初始化数组元素:
const unsigned array_size = 3;
int[array_size ] = {0, 1, 2}; //显示初始化可不指定数组的维数
特殊的字符数组:
当使用字符串字面值来初始化创建新数组时,将在新数组中加入空字符:
char cal[] = {'C', '+', '+'}; //no null
char ca2[] = {C', '+', '+','\0'}; //explicit null
char ca3[] = "C++"; // null terminator added automatically
ca1 维数为3,ca2和ca3的维数为4
不允许数组直接复制和赋值。
4.1.2 数组操作
数组元素从0开始计数,一个包含10个元素的数组,下标值是从0到9。
4.2 指针
指针和引用的比较:
第一个区别:引用总是指向某个对象,定义引用时没有初始化是错误的。
第二个区别:给引用赋值修改的是该引用所关联的对象的值。引用一经初始化就始终
指向一个特定的对象。
引用:就是地址别名,相当于给某个变量另取了一个名字。
指向指针的指针
int ival = 1024;
int *pi = &ival;
int **ppi = π
定义了指向指针的指针。
对ppi进行解引用,可获得ppi所指的对象,在本例中,所获得的对象是指向int型变量的指针pi。
int *pi2 = *ppi;
为了真正访问到ival对象,必须进行两次解引用。
cout << "The value of ival \n"
<< "direct value is " << ival << "\n"
<< "indirect value: " << *pi << "\n"
<< "double indirect value" << *pi2
<< endl;
4.2.5 指针和const限定符
指向const对象的指针:
我们使用指针来修改其所指对象的值,但是如果指针指向const对象,则不允许用指针
来改变其所指的const值。
const double *cptr; //cptr may point to a double that is const
这里cptr本身不是const,所以cptr指向的对象可以变,但是不允许改变对象的值。
const 指针:
int errNumb = 0;
int *const curErr = &errNumb;
这里curErr是const的,所以必须进行初始化,初始化完成后,curErr本身的值不运行变,
但是可以改变其所指向的对象的值。这里跟上一点是相反的。
指向const对象的const指针
const double pi = 3.14;
const double *const pi_ptr = π
这钟情况,pi_ptr指向的对象和本身的值都不允许修改。
阅读(628) | 评论(0) | 转发(0) |