2013-03-31 1 views
3

아래 표시된 코드의 문제점은 무엇입니까?경고 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 *' 

어떤 생각입니까?

코드를 변경했습니다. 덕분에

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

"내 이해에 따르면 어레이 위치를 변경하는 데 문제가 없습니다." 불가능합니다. 하지만 코드가하려고하는 것이 아닙니다. –

+0

이제 C 또는 C++? C이면,'malloc()'의 반환 값을 대문자로하지 말아라. –

+0

@DanielFischer 처음에는 2 바이트 char 배열을 할당했지만 나중에 메모리 덩어리를 할당하고 배열을 가리킬 수 있습니다. 가능하지 않니? –

답변

9

*filter @ouah char이고 당신은 그것을 char * 값을 할당한다.

+0

그래, 알았어. 질문이 업데이트되었습니다. 감사. –

관련 문제