永发信息网

此c语言例题中所得的结果为什么输出的是0010203040呢而不是0000000000(按自加号的优先级麻烦说详细点?

答案:4  悬赏:30  手机版
解决时间 2021-04-15 05:04
此c语言例题中所得的结果为什么输出的是0010203040呢而不是0000000000(按自加号的优先级麻烦说详细点?
最佳答案
printf("%d\n",*p ++);

"++"优先级更高
第一轮:
p[0] = 0;
* p++ =0;//此后p指针自增1
第二轮:
p[1] = 1;//因为第一轮p自增1,其实相当于第一轮的p[2] = 1;
* p++ =0;//此后p指针再自增1
第三轮:
p[2] = 2;//因为第一,二轮p都自增1,其实相当于第一轮的p[4] = 2;
* p++ =1;//因为前面都有自增,此时的p相当于第一轮的(p+2)//此后p指针再自增1

.......
以后逻辑都是这样,导致最后数据不正确,所以printf("%d\n",(*p) ++);是正确的
全部回答
你是for没弄清吧

首先理解一下p[i],p[i] = *(p+i)
理解*p++,先取内容,在自增1.#include 
#include 
#include 
int main(void)
{
    int *p = (int *)malloc(sizeof(int) * 10);
    memset(p,0,sizeof(int)*10);
    int i;
    for(i = 0;i < 10; i ++)
       {
            *(p+i)= i;//做个替换。如果要自加,那么这边改为*p=i;
            printf("%d ",*p);
            p++;//这个不需要,能完成正确的赋值。
       }
     free(p);
     return 0;
}
第一次:p[0]=0,
第二次:p[1]=1,这时候p[0]是上次的p[1], 这次是p[1]是上次的p[2],所以应该出现了001
第三次:p[2]=[2],折时候p[0]是第一次的p[2],这次是p[2]是第一次的p[4],所以出现了00102
依次类推
。。。
**************************************************************************所以出现了0010203040
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
蜜蜂扎了怎么办?
什么游戏好玩啊?调查
惠州初中今年大概几号开始放还加
浙江联创保险销售有限公司东阳分公司在什么地
吃什么可以拉肚子减肥,吸肚子可以减肥吗
作文无精打采的一天4o0字三年级
男人最想听到女人对他说什么话?
拜托大家帮我算下CAD2006 的序列号序列号/编
心碎拉还能粘好吗
越南人是不是和广西人是同一个祖宗的?在秦始
QQ同步助手无法使用
如图:已知OC⊥OA,直线BD经过点O,∠1=25°
冷江到娄底的火车有多少段
DNF35级紫光剑东北2区多钱?
色达县泥曲片区工作委员会怎么去啊,有知道地
推荐资讯
笔记本没开QQ.YY之类语音设备,为什么对麦说
怎样可以赚更多Q币
赵本山成美女明星的\&quot;干爹\&quo
电脑插上独立显卡以前都能用突然最近开机一直
为什么我丝绸之路主城造不了开荒队?
冰红茶和辣条在一起吃会食物中毒吗
青建·香根四季我想知道这个在什么地方
马军营有卖MH点卡的吗?
孩子差点丢了,我内心的恐惧停不下来,怎么办
什么是甲硫啊
历史上有刑天倻这个人吗?
________不变,经过的路线是________的运动,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?