c - 警告:在此函数中未初始化使用“s”[-Wuninitialized]
问题描述
基本上在最基本的层面上,我无法理解为什么我不能这样做:
#include <stdio.h>
#include <stdlib.h>
void mal(char *str){
str = malloc(sizeof(char));
}
int main(void)
{
char *s;
mal(s);
free(s);
return 0;
}
解决方案
s
按值传递给函数mal
。在mal
局部参数内部str
被赋值更改,但s
inmain
保持未初始化。在 C 中,您应该传递一个指向 to 的指针s
来mal
解决此问题:
#include <stdio.h>
#include <stdlib.h>
void mal(char **str){ // pointer to pointer
*str = malloc(sizeof(char)); // referenced variable behind str changed
}
int main(void)
{
char *s;
mal(&s); // pointer to s passed
free(s);
return 0;
}
推荐阅读
- flutter - 当应用程序处于后台时,如何在 Flutter 应用程序中获取实时更新?
- excel - 为非 Office 应用程序设置窗口参数的困难
- javascript - 尝试自定义输入文件时出现 IONIC 错误
- reactjs - 用 Jest 模拟库钩子
- asp.net-core - 使用 IdentityServer 对用户进行身份验证
- android - 这是 ViewModel 中 Coroutines IO 调度程序的正确用法吗?
- javascript - 显示来自选择选项的文本,并在结果中添加元素
- django - django:图像数据无法从表单保存到数据库
- python - 如何在 python selenium 中选择具有相同 id 的多个按钮
- php - WordPress如何清除不正确凭据上的登录字段