*a++与a++这两个有什么区别啊

如题所述

*a++与a++区别如下:

1、a++是先取a的值然后进行++运算。

2、*a++是先执行++运算,再执行 *, 即指针先移动一个位置,在对移动后指针所指位置解引用取值。

3、*与++是C语言中的运算符,++的优先级高于*。

扩展资料:

1、C语言传递参数均是以值传递(pass by value),另外也可以传递指针(a pointer passed by value)。

2、C语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

3、不同的变量类型可以用结构体(struct)组合在一起。

4、只有32个保留字(reserved keywords),使变量、函数命名有更多弹性。

5、部份的变量类型可以转换,例如整型和字符型变量。

6、通过指针(pointer),C语言可以容易的对存储器进行低级控制。

7、预编译处理(preprocessor)让C语言的编译更具有弹性。

百度百科——C语言

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-01
*a++ 要求a一定要是个指针变量,如:int *a; int x[]={1,2,3}; a=x ;

*是操作指针地址 的运算符,如上述,此时*a 就是1
*a++中,*运算级高,所以,会先算*a , 然后进行 a=a+1

而a++只代表指针的移动,即a=a+1本回答被提问者采纳
第2个回答  2012-03-24
因为没有说明a的定义,这里看问题推测应该是个指针
a++表示a指向下个地址,例如a如果当前指向数组num[0]的地址,那么a++后,当再次使用a时,其应该指向了数组num[1]的地址了;
*a++表示取指针a指向的地址中存放的内容,然后给指针a++令其指向下一个地址,如上例a指向num[0],而数组num[0]中的内容是0的话,那么,*a++的值应该为0,而执行此语句后对应的a应该指向了数组num[1]对应的地址了;
也可以这样说:*a++相当于先取当前a指针指向的地址中内容,然后进行a++,而a++单是对a指向的地址向后移动1个单位而已;
第3个回答  2012-03-24
指针运算符*与自增运算符++同一优先级别,按照自右向左的结合方式*a++等价于*(a++),意思是“指针a所指向的地址的内容”,比如数组b[3]={3,5,7},指针a=b(其实是a指向数组首元素即b[0]),则*(a++)=3,之后指针a自加一变成a+1指向元素b[1]。a++简单不说了。
第4个回答  2012-03-24
区别大得很啊,a++就是a自增1(对于不同数据类型,自增1可能不仅仅是+1而已)
*a++,必须a是指针,返回a所指向的值、然后a再自增1