为了账号安全,请及时绑定邮箱和手机立即绑定

指针的问题

指针的问题

C
four7 2016-12-04 15:04:46
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

基本上你理解得很正确啊。

ival 是一个初值为60021的 int 变量。

 ip是一个int指针。但没有初始化,也就是它指向不确定的内存,基本上后面很多问题都是由这点引起的。

还有一点:指针类型和整型间不会发生隐式转型(除了:指针可以隐式转型为布尔类型;整型常量0可以隐式转型为NULL指针)。但很多编译器对此只会给出警告而不会报错。

  • ival = *ip  语法上没有错误,但 *ip 可能会引起运行时错误。

  • ival = ip  语法上不允许(见上面的注)。指针不应直接赋值给整型。

  • *ip = ival  语法上没有问题,但同样会因为 *ip 引起运行时错误(因为ip可能指向不可写内存)。

  • ip = ival  同样整型也不应直接赋值给指针类型,语法错误。

  • *ip = &ival  这同样是把指针类型赋值给整型,语法错误。且由于 ip 未初始化, *ip 可能引起运行时错误。

  • ip = &ival  这是正确的!

  • dp = ip  这两个指针类型不匹配,语法错误。

  • dp = *ip  这还是把整型赋值给指针,语法错误。同时 *ip 可能引起运行时错误。

  • *dp = *ip  这其实是把整型赋值给浮点型,虽然两侧类型不一致,但赋值时会自动发生转型,所以语法上是没有问题的!  但同样会由于指针未初始化引起运行时问题。

查看完整回答
1 反对 回复 2016-12-04
?
onemoo

TA贡献883条经验 获得超454个赞

你要问什么呢?

你先说说你的答案和你的理解吧,我们来看看你理解的对不对

查看完整回答
反对 回复 2016-12-04
  • four7
    four7
    好 稍等
  • four7
    four7
    1.ival=*ip错误,因为*ip还未初始化.2.ival=ip错误,因为ip还未初始化/前者为数据,而后者为地址,两者不能等同. 3正确.4.ip=ival错误,因为ip为指针地址而ival为数据.5.*ip=&ival错误,因为前者为ip所指向的内容,后者为ival的地址.6.正确.7.8.9错误,两者的基类型不同.
  • onemoo
    onemoo
    你理解得基本没有问题,我又写了贴详细解答。
  • 2 回答
  • 1 关注
  • 1255 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信