2013-03-31 13 views
3

В чем проблема с кодом, показанным ниже.warning C4047: '=': 'char' отличается в уровнях косвенности от 'char *'

char filter[2] = {'\0'}; 
*filter = (char *)calloc((unsigned int)buf.st_size + 1, sizeof(unsigned char)); 

Как я понимаю, нет проблем с изменением местоположения массива? Почему я спрашиваю об этом из-за предупреждения,

Warning 1 warning C4047: '=' : 'char' differs in levels of indirection from 'char *' 

Любая идея?

Получил это, изменил код на. Благодаря @ouah

char *filter = {'\0'}; 
filter = (char *)calloc((unsigned int)buf.st_size + 1, sizeof(unsigned char)); 
+2

«Как я понимаю, нет проблем с правильной настройкой расположения массива?» Существует, это невозможно. Но это не то, что пытается сделать код. –

+0

Теперь C или C++? Если C, то не учитывайте возвращаемое значение 'malloc()'. – 2013-03-31 15:28:08

+0

@ DanielFischer Я хотел сказать, хотя я сначала выделил массив байтов с двумя байтами, я мог бы выделить кусок памяти позже и указать на него массив. Разве это невозможно? –

ответ

9

*filter является char и вы присвоив ей значение char *.

+0

yup, понял. Вопрос обновлен. Благодарю. –

Смежные вопросы