很抱歉,如果这篇文章显得无知,但我对 C 还很陌生,所以我对它没有很好的理解。现在我正在尝试找出指针。
我编写了这段代码来测试是否可以更改更改函数中 b 的值,并通过传入指针将其带回主函数(不返回)。
但是,我收到一条错误消息。
Initialization makes pointer from integer without a cast
int *b = 6
据我了解,
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int * b = 6;
change(b);
printf("%d", b);
return 0;
}
我真正担心的是修复这个错误,但如果我对指针的理解完全错误,我不会反对批评。
为了使其工作,重写代码如下 -
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int b = 6; //variable type of b is 'int' not 'int *'
change(&b);//Instead of b the address of b is passed
printf("%d", b);
return 0;
}
上面的代码将起作用。
在 C 语言中,当您希望更改函数中变量的值时,您可以“通过以下方式将变量传递到函数中”:参考“。您可以在这里阅读更多相关内容 -通过引用传递 http://www.tutorialspoint.com/cprogramming/c_function_call_by_reference.htm
现在,该错误意味着您正在尝试将整数存储到作为指针的变量中,而不进行类型转换。您可以通过如下更改该行来消除此错误(但程序将无法工作,因为逻辑仍然是错误的)
int * b = (int *)6; //This is typecasting int into type (int *)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)