【问题标题】:error: ‘outList’ is used uninitialized in this function [-Werror=uninitialized]错误:在此函数中使用了未初始化的“outList”[-Werror=uninitialized]
【发布时间】:2015-04-15 17:02:42
【问题描述】:

我正在为我的 C 类介绍编写一个程序,当我尝试使用 gcc 进行编译时不断收到一些警告。

这是我的代码:

char **outList;
*outList = strdup(cloudDevice);
printf("this is device XML message: %s",*outList);

任何想法为什么?谢谢

【问题讨论】:

  • char **outList; *outList = strdup(cloudDevice); printf("这是设备 XML 消息:%s",*outList);

标签: c pointers


【解决方案1】:

它抱怨是因为你使用了一个未初始化的指针,你在他指向任何地方之前引用了outList

你为什么用char **而不是char *

char *outList;

outList = strdup(cloudDevice);
printf("this is device XML message: %s", outList);

【讨论】:

  • 这是一个函数测试,所以我需要使用 char**
【解决方案2】:

我想通了!我不得不使用malloc

char **outList = malloc(sizeof (char **) * 256) ;  
outList = strdup(cloudDevice);
printf("this is device XML message: %s",*outList);

【讨论】:

  • 不,你不是。 (1) 在所有逻辑中你都需要sizeof(char*)(分配一些char*,返回一个指向它们的指针)。 (2) 为什么是256? (3) 在你的第二行,你需要分配给*outList。你的编译器应该为此大喊大叫。
猜你喜欢
  • 1970-01-01
  • 2021-11-11
  • 1970-01-01
  • 2020-01-07
  • 2021-04-15
  • 1970-01-01
  • 1970-01-01
  • 2019-08-15
  • 2018-05-01
相关资源
最近更新 更多