【发布时间】:2016-03-23 10:55:32
【问题描述】:
The example 取自维基百科:
void updatePtrs(size_t *restrict ptrA, size_t *restrict ptrB, size_t *restrict val)
{
*ptrA += *val;
*ptrB += *val;
}
我在main()中调用了这个函数:
int main(void)
{
size_t i = 10;
size_t j = 0;
updatePtrs(&i, &j, &i);
printf("i = %lu\n", i);
printf("j = %lu\n", j);
return 0;
}
根据维基百科的描述,val 指针并没有被加载两次,所以j 的值应该是 10,但实际上是 20。
我对这个关键字的理解不正确吗?我应该使用gcc 的一些特定选项吗?
提前致谢。
【问题讨论】: