若有说明: int *p,m=5,n;以下正确的程序段是()

若有说明: int *p,m=5,n;以下正确的程序段是(),第1张

D是正确

A,B中

p是n的地址

那么如果要输入n

应该是scanf("%d",

p);

C中

p还没定义

给p赋值就是给一个没有开辟的地址赋值了

D是正确的

意思是p为n的地址,将p地址上的数变成m,

等价于n=m;

显然是D。scanf后面的参数应该是个地址,也就是p或者是&m,&n之类的。AB错误。C中P没有初始化就直接对其指向空间赋值,也是错的,即不知道会将n写到哪个空间中去。D先将P指向的地址赋值为n的地址,然后对P指向的地址赋值为m,即n=m,正确。

printf("%c\n", (c1,c2));

(c1,c2)是一个逗号表达式,逗号表达式的计算方法是从左到右一次计算,表达式的值为最右边的值。所以输出C2 的值。

故选D。

这个,不在于 p=b;还是p=a;,关键是之前的语句

p=&b;也就是让p指向了变量b,但是B中,没有让p指向某个变量,也就是p是个野指针,语法上虽然没错,但是实际执行的话,有风险的

第一题

A:数组名字str本身就是地址所以scanf(“%s”,&str); 中不必加“&”号

B:p是指针scanf(“%s”,p); 之前没有进行初始化,不知它指向的是哪段内存,所以这样用是很危险的

C:对,将字符串从str的第3个元素开始存入str

D:未定义p是啥,该选项纯属乱来,如有雷同纯属巧合。若是定义了的话,就是说scanf(“%s”,p[2]); 应该为scanf(“%s”,&p[2]);

第二题

是答案说的c么,那就把那本书撕了,简直乱来。这题选B因为(p+3)是指str[3]的元素应为“\0”以“%d”形式打印的话就是0了

以上就是关于若有说明: int *p,m=5,n;以下正确的程序段是()全部的内容,包括:若有说明: int *p,m=5,n;以下正确的程序段是()、(16)若有说明:int *p,m=5,n;,以下正确的程序段是 A)p=&n;scanf("%d",&p); B)p=&n;scanf("%d",*p、对于以下程序代码段,叙述正确的是: char c1='D', c2='d';printf("%c\n", (c1,c2));等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9326301.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存