2.18
#include<iostream>
int main(){
int a=1,b=2;
int*p=&b;
std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl;
p=&a;
std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl;
*p=a;
std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl;
*p=b;
std::cout<<"p:"<<p<<"*p:"<<*p<<std::endl;
return 0;
}
2.19
指针是一个地址里面存放着另一个地址,地址里面存放一个对象;
引用只是一个对象的另一个名字,并且定义的时候必须初始化。
以上
2.20
int i=42; //定义一个int变量i,初值为42
int *p1=&i; //定义一个int指针 指向i
*p1=*p1**p1; // 类似 i= i*i;
2.21
int i=0;
double *dp=&i; //不合法,double型的指针指向int
int *ip=i; //不合法,定义一个指针ip,他的值应该是地址,要用&去地址
int *p=&i; //合法
2.22
if (p) //是否存在p这样的地址?
if (*p) //是否存在p指针指向的对象?
2.23
if (*p)
也许可以?
2.24
int i=42;
void* p=&i;
long *lp=&i;
void*指针不确定指向什么类型的对象,i是int变量,所以p合法
long*指针指向的应该long型,而i是int型,所以不合法。