C++中 有int a[10] ;int *p; p=a;则(*p)++,++(*p)什么意思?
3个回答
展开全部
int a[10]就是声明一个长度为10的Int类型数组
int *p 就是声明一个指针,这个指针在栈里,其字节长为4,就是地址。只不过这个地址是指向int类型的
p = a就是让p指向刚才的那个数组的头(第一个元素)
(*p)++这个要分两部分说,*p就是通过p这个指针指向的空间的数据,那么*p就是a[0],然后再++,其实就是a[0]++
现在就是a[0]++和++a[0]的区别了,后++是右值运算符,其运算等级较低,低到什么程度?比赋值运算还低。
举例:int b = a[0]++,因为其是右值运算,那么其运算顺序是b = a[0],然后a[0] += 1;如果a[0]开始是1,那么b就是1,a[0] = 2;
但是左++就不一样了,其运算等级相当高,高的程度和!差不多。
int *p 就是声明一个指针,这个指针在栈里,其字节长为4,就是地址。只不过这个地址是指向int类型的
p = a就是让p指向刚才的那个数组的头(第一个元素)
(*p)++这个要分两部分说,*p就是通过p这个指针指向的空间的数据,那么*p就是a[0],然后再++,其实就是a[0]++
现在就是a[0]++和++a[0]的区别了,后++是右值运算符,其运算等级较低,低到什么程度?比赋值运算还低。
举例:int b = a[0]++,因为其是右值运算,那么其运算顺序是b = a[0],然后a[0] += 1;如果a[0]开始是1,那么b就是1,a[0] = 2;
但是左++就不一样了,其运算等级相当高,高的程度和!差不多。
展开全部
(*p)++和++(*p)如果没有和其它语句一起使用, 则意思是一样的, 取出a[0]的值, 然后将这个值+1; 如果是其它表达式.
如a = (*p)++;与a = ++(*p); 则a的值有点不同, 一个a先取值后加1, 一个是先加1再赋给a
如a = (*p)++;与a = ++(*p); 则a的值有点不同, 一个a先取值后加1, 一个是先加1再赋给a
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p=a表示将p指向数组a的首地址,意即p指向a[0];
*p则代表a[0],它的意思是取所指向地址的元素;
(*p)++指的是a[0]++,即将a[0]后自增1;
而++(*p)指的是++a[0],即将a[0]后自增1。
*p则代表a[0],它的意思是取所指向地址的元素;
(*p)++指的是a[0]++,即将a[0]后自增1;
而++(*p)指的是++a[0],即将a[0]后自增1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询