Initialization makes pointer from integer without a cast – C
对不起,如果这篇文章被认为是无知的,但我对 C 还是很陌生,所以我对它的理解不是很深。现在我正在尝试找出指针。
我编写了这段代码来测试是否可以在更改函数中更改 b 的值,并通过传入指针将其结转回主函数(不返回)。
但是,我收到一条错误消息。
1
2 |
Initialization makes pointer from integer without a cast
int *b = 6 |
据我了解,
1
2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h>
int change(int * b){ int main(){ |
我真的很担心修复这个错误,但如果我对指针的理解完全错误,我不会反对批评。
为了让它工作,重写代码如下 –
1
2 3 4 5 6 7 8 9 10 11 12 13 |
#include <stdio.h>
int change(int * b){ int main(){ |
上面的代码可以运行。
在 C 语言中,当您希望更改函数中变量的值时,您”通过引用将变量传递给函数”。您可以在此处阅读更多相关信息 – 通过参考传递
现在错误意味着您试图将整数存储到作为指针的变量中,而不进行类型转换。您可以通过如下更改该行来消除此错误(但程序将无法运行,因为逻辑仍然是错误的)
1
|
int * b = (int *)6; //This is typecasting int into type (int *)
|
也许你想这样做:
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#include <stdio.h>
int change( int *b ) int main( void ) b = &myint; |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h>
int change(int * b){ int main(){ |
也许为时已晚,但作为对其余答案的补充,只是我的 2 美分:
1
2 3 4 5 6 7 8 9 10 11 12 |
void change(int *b, int c) { *b = c; } int main() |
在指针声明中,你应该只分配其他变量的地址,例如”
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269371.html