二级C语言选择题 两道求详细解释!

ABC哪里错了?请大神详解
2025-02-18 15:59:22
推荐回答(3个)
回答1:

A的意思是取n的地址赋给指针p ,*p表示取指针p里的变量值,正确是p=&n;
B同理,输出的是变量值,而不是地址,正确是printf("%d\n”,*p);
C格式输入函数scanf后面参数是取地址值,乍看&p好像对,但是别忘了p是指针变量,本身作用就是保存地址,所以正确是scanf("%d",p);

第一题嘛,if(a=1)b=1;后面有一个分号,看到了吗,这样if语句就结束了,所以后面还加else语句就会出错咯

回答2:

A. 这么理解,p就是内存地址,*p就是指向p的内容。&n,是取n的地址
B. printf 后面带的是内容,不是地址
C. scanf是内存地址,如果前面是int n, p,那么这样就对了

回答3:

24)中,
A:定义中*p表示p是指针;而语句“*p=&n”,表示将变量n的地址存放在指针p的地址中。而不是用指针p指向变量n的地址。正确的应该是p=&n;故A错
B:输出的是指针p的地址,而不是指针指向的内容,正确的应该是printf("%d\n",*p);
C:p本来就是一个指针,如果在对其取址,则表示将数据输入给地址变量p对应的地址中,而不是赋给指针p指向的存储空间中。正确的应该是scanf("%d",p).