帮我解决一道C++的题
来源:百度知道 编辑:UC知道 时间:2024/06/20 05:19:18
若说明:int *p1,*p2,m=5,n;以下是正确赋值语句的选项是()
A、p1=&m;p2=&p1; B、p1=&m;p2=&n;*p1=*p2;
C、p1=&m;p2=p1; D、P1=&m;*p2=*p1;
为什么?
A、p1=&m;p2=&p1; B、p1=&m;p2=&n;*p1=*p2;
C、p1=&m;p2=p1; D、P1=&m;*p2=*p1;
为什么?
单从语法上看,B\C\D都对!只有A中p2=&p1; 错误。
实在要选就选C吧,相对来说 C 更不会错。
从实际应用角度看,B\D显然运行后【会】出错!C中p1没有指向,也可能【潜在】错误。
为使你容易掌握,我把int *p1,*p2,m=5,n;中 m,n称为基本变量,p1,p2为指针变量。
【规则1.】记住,同类型的数据才能相互赋值(int类型和char类型除外)。
【规则2.】另有,基本变量前面加 & 表示取该变量的地址,指针变量前加 * 表示取地址里面存放的“数值”。
int *p1,*p2;定义两个int类型指针变量(简单的说,你可以把指针变量理解为“地址值”)
int m=5,n;定义了两个int类型的基本变量(为区别于指针,你可以把后者理解为是“数值”)。
显然,p1=&m;p2=&n;都对,左右都是“地址值”,可以赋值。
p2=&p1错误! p1和p2是同类型的,p2=p1才对。
从语法上看,B\C\D都对!
从实际应用角度看,
*p1 = *p2;错误!因为他们都没有指向任何存储单元,是不能进行取值操作的。而且p2 =p1也可能潜在错误。
C
指针要初始化,要给指针一个地址,否则*p解引用什么呢?
选C,若要A正确,需int ** p2
B中p2指向没有初值的变量,这很危险。
D中*p2没有指定的变量
答案是C