int和++ new每次都增加2

时间:2011-02-03 14:15:50

标签: iphone objective-c cocoa cocoa-touch int

只是一个愚蠢的问题: 我有一个简单的计数器,但似乎它给出了我期望的双重值。

short int *new = 0;
++new;
NSLog(@"Items: %hi", new);

然后返回:

  

项目:2

对Cocoa来说相对较新,并且仍在制定上面明确表示的小细节......

3 个答案:

答案 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);