c、 消除未初始化的警告错误
在c中的函数c、 消除未初始化的警告错误,c,function,pointers,warnings,C,Function,Pointers,Warnings,在c中的函数myfunc1()中,我要做的第一件事是调用另一个函数myfunc2(),它总是设置指针GCC警告我可能未设置指针。我怎样才能摆脱这个警告呢 这里有一些简化的代码来演示它 int bla; void my_func2(int *ptr) { ptr = &bla; } void my_func1() { int *ptr; //ptr=0; my_func2(ptr); } 如果行ptr=0未注释,则警告消失。我不想设置变量,因为它不做任何事情
myfunc1()
中,我要做的第一件事是调用另一个函数myfunc2()
,它总是设置指针<代码>GCC警告我可能未设置指针。我怎样才能摆脱这个警告呢
这里有一些简化的代码来演示它
int bla;
void my_func2(int *ptr) {
ptr = &bla;
}
void my_func1() {
int *ptr;
//ptr=0;
my_func2(ptr);
}
如果行ptr=0
未注释,则警告消失。我不想设置变量,因为它不做任何事情,因为my_func2()
设置了它
gcc
警告消息为
警告:“ptr”在此函数中未初始化使用
[-Wuninitialized]
任何帮助都将不胜感激。我想你要做的是:
int bla;
void my_func2(int **pp) {
*pp = &bla;
}
void my_func1() {
int *ptr;
my_func2(&ptr);
...
}
my_func2
不做任何事情(可观察)。你的编译器是对的,ptr是单元化的。它设置了ptr。我说这是简化的代码。我的功能确实有作用,但没有。它设置其本地副本,然后对其不做任何操作,my_func1
中的本地变量根本不会更改,并且保持未初始化状态。编译器是正确的,ptr
从未设置。func2
内部的变量ptr
是本地变量。如果您想在main中设置一个,您必须传递func2`anint**
并进行设置。好的,它如何设置ptr?像这样的**ptr?就是这样。谢谢大家的帮助。当我回来时,我会点击你答案的复选框。上面说我必须等6分钟。有史以来最快的答案。