2009-05-15 38 views
0

我有這個數組:如何在C/Objective-C中獲得數組的大小?

unsigned char* data = CGBitmapContextGetData(cgctx); 

然後我試圖讓與的sizeof(數據)的大小,但將返回我4.數據的廢話價值持有的信息數量較大。這不能只是4;)

我什至得到的數據信息[8293] ...所以...不是4個元素。

回答

7

sizeof返回4是因爲您的變量被聲明爲指針,而不是C數組(char data[1024])。

要得到您需要的尺寸,您需要使用CGBitmapContextGetHeightCGBitmapContextGetWidth

+0

你需要比這兩個功能的更多。見Mykola的答案。 – 2009-05-15 14:59:04

4

4的值不是無稽之談,而是你要求的指針的大小。 C沒有辦法找出指針指向的數組的大小。

0

你在混淆指針和它指向的對象。

1

您正在獲取指針的大小,而不是數組的大小。使用數組的sizeof()只如果你確實有一個數組來測量工作;)

6

嘗試使用

CGBitmapContextGetBitsPerPixel 
CGBitmapContextGetHeight 
CGBitmapContextGetWidth 

CGBitmapContextGetBytesPerRow 
CGBitmapContextGetHeight 
+0

後者是更好的;取決於色彩空間,對齊方式等,每行末尾可能會有多餘的未使用字節。之前我已經被這個東西咬過了(儘管很多年前,我正在玩Linux framebuffer直接渲染)。 – 2009-05-15 12:28:47