【发布时间】:2016-06-05 14:50:35
【问题描述】:
在这段代码中,如果我写“*p++=*q”而不是“*p++”,则没有任何变化。为什么?
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=a, *q=&a[8];
*p++;
printf("%d \n", *p);
printf("%d \n", *q);
printf("%d \n", p);
printf("%d \n", q);
【问题讨论】:
-
注:
printf("%d \n", p);--> UB. -
您希望改变什么,为什么?
-
有些变化。您只是看不到发生了什么变化,因为您不看它。
-
*p++= 增加指针(*p)++= 增加指向的内容 -
@Destructor 既然你提出了这个话题,让我告诉你,UB 是任何地方的主要问题。任何拥有 UB 的代码都不能被信任做任何理智的事情。
标签: c