本文目录一览:
- 1、c语言关于指针问题 int x=2,y=5,*px=&x,*py=&y;这个语句*px=&x正确么,如果正确的话在vc++6.0中是如何运
- 2、在C语言中,&*px的含义
- 3、c语言 *++px(px指针),是什么意思呢
c语言关于指针问题 int x=2,y=5,*px=&x,*py=&y;这个语句*px=&x正确么,如果正确的话在vc++6.0中是如何运
int x=2,y=5,*px=x,*py=y; 这叫声明,不叫语句。
声明中 int *px=x; 正确。它声明 px 是指针,并 初始化为 x 的地址。
如果不是声明,而是语句:
int x=2, *px; // 声明 变量 x, 初始化 x=2, 声明 px 是 指针 变量
*px=x; // 这里 是语句,这个语句 不正确。
语句里要写:
px = x; // 把 x 的地址 赋给 px, 也就是 让 px 指向 x.
接下来要是有语句:
*px = 5; // 这个语句正确, 语句里 *px 是 值
y = *px; // 这个语句正确, 语句里 *px 是 值
--------------
C/C++ 奇葩之一,外貌相同的东西,在声明里 和 在 语句里 却可能 不是一回事。
在C语言中,&*px的含义
px是指针,*px是取px指向的元素的值,*px是取指向元素的地址
c语言 *++px(px指针),是什么意思呢
*px++等价于*(px++),跟(*Px)++ 完全是两种运算。很令人遗憾的是*(px++)不等同于px++;
*p;,因为后置++操作的效果是在当前子表达式结束(更准确的术语是“顺序点“sequence point)时生效,*(px++)实际上同义于*px;px=px+1
这个名词翻译成“结合性”的比较多吧。结合性影响的仅限于隐式加括号的位置,例如“前置++,--,!等运算符的的结合性是从右到左”就表示++++a隐式加上括号后等同于++(++a),即括号总是加在靠右的位置;*,/,%,+,-之类的运算符的的结合性是从左到右,就表示 a*b*a隐式加上括号后等同于(a*b)*c。结合性跟运算顺序是毫无关系的,这是极容易造成误解的地方
就是正号,例如表达式“+9”中的+就是一元的