指针的问题

http://img.mukewang.com/5843bffc00019cda04470260.jpg

four7
浏览 1251回答 2
2回答

onemoo

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

onemoo

你要问什么呢?你先说说你的答案和你的理解吧,我们来看看你理解的对不对
打开App,查看更多内容
随时随地看视频慕课网APP