关于c++中指针变量的问题

2025-03-22 21:15:31
推荐回答(3个)
回答1:

一、int *i_point=1000;是明显的语法错误。因为,等号左边是声明i_point是int *型变量(即指向int变量的指针变量)——这里一定要注意*不是i_point的而是int的;右边是不加说明的整数,默认是有符号整数,所以等号左右类型不匹配,连编译都是过不了的!如果程序员想把1000当地址赋给i_point,那得写int *i_point=(int *)1000;,把1000强制为int *型地址才对。
二、*i_point=3;当然是正确的。因为这条语句中的*前没有别的符号,它就是独立的操作符,作为单目操作符时它是取后面变量i_point指向的目标的值的意思,那么=3则是让这个i_point指针指向的目标的值=3,显然是合法的。
*在声明语句中只是个记号,表示某种变量类型的指针,没有其他意义,而在其他运算语句中是取值操作符(单目)或乘号(双目)。掌握这一点,类似问题迎刃而解!

回答2:

int *i_point=1000;这条语句的含义也就是把1000赋值给i_point变量自己!即:把1000当作地址值,赋值给i_point变量
按理论,这里不会出现语法上的错误而出现的应该是执行结果的错误!(同意你的看法)

但是有的编译器可能会做这种检查,对有这种直接给指针变量赋值常数进行错误报警或警告。有的编译器则忽略这种操作!

回答3:

你在那里看到的啊?
其实这个语法是对的,只是实际上是不是这样,那要具体问题,具体分析。