请问C语言中 *x++ (*x)++ ++*x *++x的区别

如题所述

先比较++和*(指针)的优先级,++较高。

那么*x++就是取x指向内存的值,然后x+=1;

(*x)++是x指向内存的值,然后其内存的值自增1。

++*x 是x指向内存的值先自增1,在取该值。

*++x 是x先+=1,在取其指向内存的值。

++跟*的优先级一样,两个若一起出现,运算顺序是从右往左(不是常规的从左往右),所以++*x即++(*x)是先取x的值,然后让值自己加1;(地址没变,指针指向的值变了。)

*++x即*(++x),先让x的自己加1,就是x的地址加上这个指针类型的步长(比如说这个指针是int类型,那它的地址+4,),然后再取x的值。(地址变了,但是值没变)

扩展资料:

基本数据类型

void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。(C89标准新增)

char:字符型类型数据,属于整型数据的一种。(K&R时期引入)

int:整型数据,表示范围通常为编译器指定的内存字节长。(K&R时期引入)

float:单精度浮点型数据,属于浮点数据的一种。(K&R时期引入)

double:双精度浮点型数据,属于浮点数据的一种。(K&R时期引入)

Bool:布尔型(C99标准新增)

Complex:复数的基本类型(C99标准新增)

Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数(C99标准新增)

Generic:提供重载的接口入口(C11标准新增)

类型修饰关键字

short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)

long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)

long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)

signed:修饰整型数据,有符号数据类型。(C89标准新增)

unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)

restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。

参考资料来源:C语言-百度百科

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-17
首先比较++和*(指针)的优先级,++较高。
那么*x++就是取x指向内存的值,然后x+=1;
(*x)++是x指向内存的值,然后其内存的值自增1。
++*x 是x指向内存的值先自增1,在取该值。
*++x 是x先+=1,在取其指向内存的值。本回答被提问者和网友采纳
第2个回答  2018-03-02
++跟*的优先级一样,如果两个同时出现,运算是从右往左(不是常规的从左往右),所以++*x即++(*x),先取x的值,然后让值自加1;(地址没变,指针指向的值变了。搞不懂的话自己用快递做例子)
*++x即*(++x),先让x的自加1,就是x的地址加上这个指针类型的步长(比如说这个指针是int类型,那它的地址+4,以此类推),然后再取x的值。(地址变了,但是值没变)
注意的是x代表的是指针,指针即地址,*是取值符,*x就是取指针x里存的值

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网