【发布时间】:2018-09-08 19:56:35
【问题描述】:
在C语言的以下两行中:
int* a = (int *)calloc(automata_size, sizeof(int));
int* b = (a++);
我发现 a 和 b 共享同一个地址。如果我们有,情况并非如此
int* a = (int *)calloc(automata_size, sizeof(int));
int* b = a + 1;
为什么?
【问题讨论】:
-
因为 a++ 和 a+1 的值不同。查看后增量运算符的定义。
-
不是a++和a=a+1是等价的表达式吗?
-
不,它们返回不同的值。查看后增量运算符的定义。
-
非常感谢!很抱歉,这可能会导致比网站更简单的解释。
-
int* b = a + 1不改变a。但是,int* b = (*a++)可以。与int* b = a++相同。这是 postincrement 形式。要获得您想要的效果,请执行以下操作:int *b = ++a。这是 preincrement 形式。使用 postincrement,a和b会有所不同,但使用 preincrement 之后它们将是相同的
标签: c pointers memory-management