[image]20 c语言结构体问题,18,19求详解。程序如下

 我来答
White_MouseYBZ
2016-11-30 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6447万
展开全部
18.c)是不合法的。因为指针i0被初始化为'\0'即NULL,说明i0是无效指针,不能引用。
19.c)正确。把一个int型变量的地址强制为一个自定义结构体型地址赋给p。不过这也只是语法正确,这样做太奇葩……
追问
18选d,。1918.c)是不合法的。因为指针i0被初始化为'\0'即NULL,说明i0是无效指针,不能引用。
19.c)正确。把一个int型变量的地址强制为一个自定义结构体型地址赋给p。怎么看出来的,学的时候没有这种表示方法啊,其他的为什么错了。
追答
  1. 18题,你的追问18选d正确。因为ptr->i1就是a[0].i1,a[0].i1是int型变量,在这里用*a[0].i1是把a[0].i1误作地址使用了,错。所以应该选d。我当时是从前向后判断,对C)的分析判断也是正确的,ptr->i0确实是NULL;但错误地以为++是对它指向的目标的操作,所以失误了——对空指针不可引用,但能对其本身可以操作。

  2. 19题,其实C)、D)都是正确的。A错:不能将一个int型变量赋给一个struct sk型指针p;B错:p还没有赋值,是野指针就拿来当右值使用(*是对指针内容操作,就是把p当右值操作);C)是把一个int型变量的地址(&是取地址)强制为struct sk*型指针赋给struct sk*型指针当然是正确的;D)的情况类似,只是把一个int型变量值直接强制为struct sk*型指针赋给struct sk*型指针,这也是合法的。所以搞不清出题者的本意。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式