永发信息网

*k++和*(k++)的区别

答案:2  悬赏:30  手机版
解决时间 2021-02-22 19:42
  • 提问者网友:刺鸟
  • 2021-02-22 00:02
void main()
{
int c[]={5,10,7,12};
int *k,*a,*b,*m;
k=c;
a=c;
b=c;
m=c;
printf("%d\n",(*k)++);
printf("%d\n",*a++);
printf("%d\n",*(b++));
printf("%d\n",*(++m));
}
这是程序

结果5 6 6 10
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-02-22 00:30
*k++和*(k++) 没有区别,是同一个意思。
printf("%d\n",(*k)++); 输出*k=5 *k=5+1=6
printf("%d\n",*a++); 输出*a=6 a=a+1指向10
printf("%d\n",*(b++)); 输出*b=6 b=b+1指向10
printf("%d\n",*(++m)); 先m=m+1指向10,输出*m=10printf("%d\n",*a++); 输出*a=6 a=a+1指向10
printf("%d\n",*(b++)); 输出*b=6 b=b+1指向10
这两种写法是相同的。
*a++ 等价于 先使用*a 然后 再进行 a=a+1指向后一个
*(b++) 与不带括号是相同的 *b++ , 同上
全部回答
  • 1楼网友:躲不过心动
  • 2021-02-22 00:43
++k:先自加再取值,k++:先取值在自加 例如: #include int main() { int a=1,b=1,c,d; c=a++;//c先取a的值,a再自加  d=++b;//b先自加,d再取b的值  printf("a:%d,b:%d,c:%d,d:%d\n",a,b,c,d);     return 0; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯