6.1.4.3指针的算术运算 在实用中,仅使用指针的加减运算。应当说明的是,指针的 算术运算是以指针所属数据类型所占内存的大小为单位进行 的。即,设指针p的类型为type,则有: p±n=p± n x sizeof(type 例如,设i为一int型指针,其值为2000,则执行语句: p+= 后,ip的值将变为2004,而不是2002
6.1.4.3 指针的算术运算 在实用中,仅使用指针的加减运算。应当说明的是,指针的 算术运算是以指针所属数据类型所占内存的大小为单位进行 的。即,设指针 p 的类型为 type,则有: p n = p n sizeof(type) 例如,设 ip 为一 int 型指针,其值为 2000,则执行语句: ip += 2; 后,ip 的值将变为 2004,而不是 2002
61.5多级指针 由于指针是一个变量,它自身也需要占据一定的内存单元,所 以可以说明一个指针来存放指针变量的地址。这样的指针的数 据类型自然应当是某一种指针类型。例 t i=5, *ip =&i int *kipp =&ip: 这里,ipp就是一个类型为nt(整型指针类型)型的指针, 称为指向指针的指针。对于这样的指针,当用一个星号来访问 其内容时,访间的将是一个地址:用两个星号来访问它时,访 问的才是一个数据。例: cout < ipp ∥输出(假设)为0x2000 cout <<*ipp ∥输出(假设)为0x2100 cout < ip ∥同上 cout <<* ipp ∥输出为5
6.1.5 多级指针 由于指针是一个变量,它自身也需要占据一定的内存单元,所 以可以说明一个指针来存放指针变量的地址。这样的指针的数 据类型自然应当是某一种指针类型。例: int i = 5, *ip = &i; int **ipp = &ip; 这里,ipp 就是一个类型为 int*(整型指针类型)型的指针, 称为指向指针的指针。对于这样的指针,当用一个星号来访问 其内容时,访问的将是一个地址;用两个星号来访问它时,访 问的才是一个数据。例: cout << ipp; // 输出(假设)为 0x2000 cout << *ipp; // 输出(假设)为 0x2100 cout << ip; // 同上 cout << **ipp; // 输出为 5
62指针与数组 62.1用指针访问数组元素 在C++语言中,数组名实际是就是一个指针,它标识出数组 元素所占内存的首地址。然而,数组名相当一个常指针,即这 种指针的值是一个常量。因此,不得对数组名进行赋值和算术 运算。 利用数组名是一个指针这一事实,可以将数组名赋给一个指针, 然后通过对指针的算术运算来逐一地访问数组的各个元素,以 提高程序的执行效率和改善程序的灵活性。这实际上是指针最 普遍的用法
6.2 指针与数组 6.2.1 用指针访问数组元素 在 C++ 语言中,数组名实际是就是一个指针,它标识出数组 元素所占内存的首地址。然而,数组名相当一个常指针,即这 种指针的值是一个常量。因此,不得对数组名进行赋值和算术 运算。 利用数组名是一个指针这一事实,可以将数组名赋给一个指针, 然后通过对指针的算术运算来逐一地访问数组的各个元素,以 提高程序的执行效率和改善程序的灵活性。这实际上是指针最 普遍的用法
6.21.1指向数组元素的指针 由于数组元素是变量(下标变量),所以将指针指向数组元素 与将指针指向普通变量的用法没有什么区别。例: int iArr[10],*ip ip=&iA⑤]; ip=5; ∥等效于iAr3]=5
6.2.1.1 指向数组元素的指针 由于数组元素是变量(下标变量),所以将指针指向数组元素 与将指针指向普通变量的用法没有什么区别。例: int iArr[10], *ip; ip = &iArr[3]; *ip = 5; // 等效于 iArr[3] = 5
6.2.1.2通过指针访问数组元素 将指针指向数组的首地址,可以很方便地访问所有的数组元素 当对数组进行顺序访问时,其效率大大高于使用下标变量。例: int iArr[101, * ip= iArr for(nti=10;i<20;i++) p=1 1p ++
6.2.1.2 通过指针访问数组元素 将指针指向数组的首地址,可以很方便地访问所有的数组元素。 当对数组进行顺序访问时,其效率大大高于使用下标变量。例: int iArr[10], *ip = iArr; for(int i = 10; i < 20; i ++) { *ip = i * i; ip ++; }