我对正在发生的事情感到困惑。这更像是一个我不知道答案的技巧问题。
我main.m
的 Objective-C 程序中有以下功能。
int incrementCounter(){
int counter;
counter+=2;
return counter;
}
在我的里面main.m
NSLog(@"Counter: %d",incrementCounter());
NSLog(@"Counter: %d",incrementCounter());
NSLog(@"Counter: %d",incrementCounter());
奇怪的是一本mac书(不知道Xcode版本)当我执行这个输出是:
2013-05-28 19:16:27.131 SOQ[4923:707] Counter: 1
2013-05-28 19:16:27.132 SOQ[4923:707] Counter: 3
2013-05-28 19:16:27.132 SOQ[4923:707] Counter: 5
我的问题在这里:
1.如何counter
初始化为1?(当我使用static
它时,它被初始化为零)
2.如何通过连续的方法调用存储值?
3. 当我为程序的不同执行检查此变量的内存位置时,它保持不变。这是怎么发生的?
当我在另一个 mac(lion Xcode 4.2.1)中执行相同的代码时,它会给出以下输出:
2013-05-28 19:16:27.131 SOQ[4923:707] Counter: 32769
2013-05-28 19:16:27.132 SOQ[4923:707] Counter: 32769
2013-05-28 19:16:27.132 SOQ[4923:707] Counter: 32769
我的问题在这里:
1. 这种行为如何从 mac 到 mac 变化?//我在想不同的编译器版本,但它都使用相同的(虽然不确定)。还有其他方法吗?
2. get如何counter
初始化为32767?我在想垃圾值,但是objective-c编译器不应该将像int这样的原语初始化为零吗?我一遍又一遍地得到相同的 32769。如何?
也许我错过了一些基本的东西。任何指针?