Как я могу получить размер массива в C / Objective-C? - PullRequest
0 голосов
/ 15 мая 2009

У меня есть этот массив:

unsigned char* data = CGBitmapContextGetData(cgctx);

затем я попытался получить размер с помощью sizeof (data), но это вернуло мне бессмысленное значение 4. data содержит большой объем информации. Это не может быть просто 4;)

Я даже получаю информацию в данных [8293] ... так что ... совсем не 4 элемента.

Ответы [ 5 ]

7 голосов
/ 15 мая 2009

sizeof возвращает 4, потому что ваша переменная объявлена ​​как указатель, а не как массив C (char data[1024]).

Для получения размера вам необходимо использовать CGBitmapContextGetHeight и CGBitmapContextGetWidth.

6 голосов
/ 15 мая 2009

Попробуйте использовать

CGBitmapContextGetBitsPerPixel
CGBitmapContextGetHeight
CGBitmapContextGetWidth

или

CGBitmapContextGetBytesPerRow
CGBitmapContextGetHeight
4 голосов
/ 15 мая 2009

Значение 4 - это не ерунда, это размер указателя, который вы просили. В C нет способа узнать размер массива, на который указывает указатель.

1 голос
/ 15 мая 2009

Вы берете размер указателя, а не массива. Использование sizeof () для массивов работает, только если у вас есть массив для измерения;)

0 голосов
/ 15 мая 2009

Вы путаете указатель и объект, на который он указывает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...