首页 > 试题广场 >

以下程序的输出结果是?

[单选题]
有以下程序:
#include<stdio.h>
int main(){
     int a = 1;
     int b = 3;
     int c = 5;
     int *p1 = &a;
     int *p2 = &b;
     int *p = &c;
     *p = *p1*(*p2);
     printf("%d\n", c);
}
执行后的输出结果是()
  • 1
  • 2
  • 3
  • 4
要是选项中有5这个答案,可能迷惑性更大一点。
  *p=*p1*(*p2); //(*p1)的值为1,(*p2)的值为3,两者相乘的值赋给*p  。
而p是指向c的地址的,所以*p改变后,c的值也相应的改变了。
答案选3
发表于 2015-09-08 10:18:32 回复(2)
*p表示去取地址对应的内容。
发表于 2015-09-07 21:59:30 回复(0)
*p=*p1*(*p2); //(*p1)的值为1,(*p2)的值为3,两者相乘的值赋给*p 。 …………………………………… 而p是指向c的地址的,所以*p改变后,c的值也相应的改变了。
编辑于 2020-03-01 19:20:15 回复(0)
int *p = &c;
相当于
int *p;
p = &c;
第一次以为是*p = &c;
发表于 2018-02-02 14:43:33 回复(0)
*地址,取出里面的值,*常量就是乘号
发表于 2022-04-24 09:33:13 回复(0)

Int *p= & a ;相当于Int *p;P=&a;以p是指向a的指针,*p=a的值

编辑于 2021-09-20 23:40:52 回复(0)
中间是乘号
发表于 2021-03-17 15:57:52 回复(0)
1*3=3;(*p2)优先级最高=3,接下来直接计算*p1=1,而中间的*只能表示为乘号了,所以就是1*3=3

发表于 2017-07-17 20:28:13 回复(0)
╮头像
p是指向c的地址的,所以*p改变后,c的值不能确定是否改变,但是备选答案中没有 5 那个选项,所以就认为当指针指向的内容改变时,所对应的变量的值也因此而改变
发表于 2017-04-13 20:57:28 回复(0)
明白指针的使用很重要。
发表于 2016-11-03 09:40:28 回复(0)
贪心法则
发表于 2016-06-23 21:16:25 回复(0)