Objective C UInt32定义

时间:2015-02-26 21:42:24

标签: objective-c uint32

我在代码中发现了以下语句,我并不完全理解:

UInt32 *pixels;
UInt32 *currentPixel = pixels;
UInt32 color = *currentPixel;

前两行对我来说很清楚,因为它们是UInt32对象,像素和currentPixel的定义。 但这句话对我来说没有意义。 为什么不是:

UInt32 *color = currentPixel

UInt32 color = *currentPixel

有什么不同?

如果我从currentPixel中删除*,我会收到消息: 指向整数转换的不兼容指针初始化' UInt32' (又名' unsigned int')表达式为' UInt32 *' (又名' unsigned int *');用*

取消引用

取消引用*是什么意思?

谢谢

1 个答案:

答案 0 :(得分:2)

// alloc height * width * 32 bit memory. pixels is first address.
UInt32 *pixels = (UInt32 *) calloc(height * width, sizeof(UInt32));

// you can do like this
UInt32 color = pixels[3]

// or like this, they are equal.
UInt32 color = *(pixels + 3)

指针就像一个数组,有时候。

有一个关于指针的教程: http://www.cplusplus.com/doc/tutorial/pointers/

UInt32不是一个对象。 它在32位机器上是无符号长的。 64位机器中的unsigned int。

有它的定义:

#if __LP64__
typedef unsigned int                    UInt32;
typedef signed int                      SInt32;
#else
typedef unsigned long                   UInt32;
typedef signed long                     SInt32;
#endif