快捷导航

指针的问题

指针的问题

免责声明:本内容仅代表回答者见解不代表本站观点,请谨慎对待。

版权声明:作者保留权利,不代表本站立场。

回复

使用道具 举报

参与会员2

基本上你理解得很正确啊。
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 这其实是把整型赋值给浮点型,虽然两侧类型不一致,但赋值时会自动发生转型,所以语法上是没有问题的! 但同样会由于指针未初始化引起运行时问题。

回复

使用道具 举报

你要问什么呢?
你先说说你的答案和你的理解吧,我们来看看你理解的对不对
回复

使用道具 举报

可能感兴趣的问答

发新帖
  • 微信访问
  • 手机APP