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