在下面的代码中,b
的地址在块内变化。为什么?如果它改变为b
,为什么不为一个?变量的地址在块内变化
int b =42;
int *a = &b;
printf("%p", a);
printf("%p", &b);
void (^testBlock)(void) = ^(void)
{
printf("%p", a); //address not changed
printf("%p", &b); //address is changed
};
testBlock();
printf("%p", a); //address not changed
printf("%p", &b);//address not changed
相关(为了解更多关于发生了什么):[块如何捕获它的封闭范围之外的变量?](http://stackoverflow.com/a/17819142) –