作业帮 > 综合 > 作业

指针的逻辑运算例题 inta[5]={1,3,5,7,9},*p1=a,*p2=0;那么 p1,p2,为真,p2,p1&

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/29 12:28:33
指针的逻辑运算
例题 inta[5]={1,3,5,7,9},*p1=a,*p2=0;
那么 p1,p2,为真,p2,p1&&p2 为假.
请问此处p1,p2分别代表什么啊,还有为什么*p1=a是什么意思啊,不是p1=a是p1指向a[0]吗?他们有什么区别啊?
p1是指向数组a的首地址的指针,p2为空指针.
因为p2为空指针,所以p2取反为真.(即!p2的值为真).p1不为空,所以不管他指向哪,都为真.
所以 p1,!p2, 为真,p2,p1&&p2 为假.
p1指向数组a的首地址,因为这里是在定义变量的同时赋值,所有可以int *p1=a;这里的*号表明这是一个指针变量,而非取值的那个*.
1.int p1;
p1=a;//因为2个都是指针,所以可以直接赋值.
2.int p1;
p1=&a[0];//&为取地址
以上的效果都跟int *p=a的效果是一样的,都是把p1指向a的地址,即a[0]的地址.
另外int *p=0;虽然没错,但是要写成int *p=NULL;避免把一般变量与指针变量弄混(NULL是一个宏,其值为0),这是一个好坏习惯的问题.