三九宝宝网宝宝教育教学论文

C语言笔试题请大侠来看看我有些不明白呀!

01月06日 编辑 39baobao.com

int a[] = {6, 7, 8, 9, 10}; int *p = a; // p指向数组a的首指针,即指向了a[0]*(p++) += 123; // 按照运算优先级,先算括号类的p++,虽然p++进行了++,但并不会指向a[1],而是指向a[0],因为++在后,如果++在p前则p指向a[1],然后运算括号外的*,由于此时p仍指向a[0],所以*p+=123实际是等于a[0] += 123,所以此时 a[0] = 129, 运算完 += 后,此时p不再指向a[0],而是指向a[1].printf("%d\n",a[0]); // 此时a[0] = 129printf("%d, %d\n", *p, *(++p)); // printf是从右向左取参数的,所以先执行*(++p),后执行*p,执行*(++p)时先执行++p,由于++在p前,又由于p此时执行a[1],所以执行++后,p指向a[2],那么*p自然就等于a[2]的值8了,所以这行输出8,8...

推荐阅读
图文推荐