只是一个愚蠢的问题: 我有一个简单的计数器,但似乎它给出了我期望的双重值。
short int *new = 0;
++new;
NSLog(@"Items: %hi", new);
然后返回:
项目:2
对Cocoa来说相对较新,并且仍在制定上面明确表示的小细节......
答案 0 :(得分:17)
你没有整数变量,你有一个整数变量的指针(一个短整数,具体而言)。它增加2,因为短整数是两个字节长。指针变量保存另一个值的内存地址。增加指针意味着“使该指针指向内存中 next 的东西”,其中“thing”是指针被声明指向的值的类型。指向double
的指针每次都会增加8。
声明中的“*”使其成为指针。如果你只想要一个int,你只需要写
short int new = 0;
++new;
答案 1 :(得分:3)
Aah,当你递增一个指针时,它以它所拥有的对象的 size 为增量。你在看一个地址,而不是一个数字。
执行此操作,并查看:
short int *new = 0;
NSLog(@"Items now: %hi", new);
++new;
NSLog(@"Items then: %hi", new);
答案 2 :(得分:1)
因为您定义new
的方式是指向整数*new
的指针。您将内存位置设置为包含short int
,这是一个16位整数,因此它占用内存中的两个字节。因此,在第二行增加该值意味着将内存位置增加2.
我认为您不打算处理内存位置。除非在特定情况下,否则定义整数并控制其在内存中的位置有点奇怪。能做你想做的代码是:
short int new = 0;
++new;
NSLog(@"Items: %hi", new);