【问题标题】:warning C4047: '=' : 'char' differs in levels of indirection from 'char *'警告 C4047:“=”:“char”与“char *”的间接级别不同
【发布时间】: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


【解决方案1】:

*filter 是 char,而您正在为其分配 char * 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-07
    • 2016-08-02
    • 2018-10-09
    • 1970-01-01
    • 2019-06-21
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多