C++Primer第五版:练习2.18 2.19 2.20 2.21 2.22 2.23 2.24

练习2.18

#include<iostream>

int main()
{
    
    
	int i = 5;
	int j = 6;
	int* pi = &i;

	pi = &j;//更改指针的值
	*pi = 7;//更改指针所指对象的值
}

练习2.19
指针本身是一个对象,允许对指针赋值和拷贝,而且在指针的声明周期内它可以先后指向几个不同对象。
指针无须在定义时赋初值。在块作用域内定义的指针如果没有被初始化,也将拥有一个不确定的值。

引用并非对象,它为对象起了一个别名。定义引用时,程序把引用和它的初始值绑定,因为引用一直绑定所以必须初始化。

练习2.20

#include<iostream>

int main()
{
    
    
	int i = 42;
	int* p1 = &i;
	*p1 = *p1 * *p1;
}

指针p1指向i的地址,p1指向的值改变为原p1指向的值的平方。

练习2.21
(a)非法,double类型的指针不能指向非double类型的值
(b)非法,指向的应该是地址
(c)合法

练习2.22

 p为int型的指针
 第一行判定p指针本身的值,本身有指向的值所以表达的条件值未true
 第二行判定p指针指向的值,此条件值取决于int型的值

练习2.23

  可以,用if条件句判断指针本身,若指针拥有一个合法值,就能用在条件表达式中

练习2.24

p为void类型,可以存放任意对象的地址
lp类型为long与int类型不符

猜你喜欢

转载自blog.csdn.net/Xgggcalled/article/details/108889820