【发布时间】:2013-03-31 15:25:48
【问题描述】:
下面显示的代码有什么问题。
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));
【问题讨论】:
-
"按照我的理解,改变数组位置没有问题吧?"有,这是不可能的。但这不是代码想要做的。
-
现在是 C 还是 C++?如果是C,则不区分
malloc()的返回值。 -
@DanielFischer 我的意思是说,即使我最初分配了一个两字节字符数组,我也可以稍后分配一块内存并将数组指向它。不可能吗?
-
char *filter = {'\0'};->char *filter = NULL; -
@Aczire 否。数组具有固定的大小和位置。您可以为此声明一个指针和
malloc/realloc内存。
标签: c visual-c++ c99