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 这其实是把整型赋值给浮点型,虽然两侧类型不一致,但赋值时会自动发生转型,所以语法上是没有问题的! 但同样会由于指针未初始化引起运行时问题。
- 2 回答
- 1 关注
- 1255 浏览
添加回答
举报
0/150
提交
取消