很抱歉,如果这篇文章不知道,但我对C仍然很新,所以我不太了解它。现在我正在试图找出指针。
我编写了这段代码来测试我是否可以在更改函数中更改b的值,并通过传入指针将其转移回main函数(不返回)。
然而,我收到的错误是。
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;
}
我真的很担心修复这个错误,但如果我对指针的理解完全错误,我就不会反对批评。
答案 0 :(得分:8)
使其工作重写代码如下 -
#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中,当您希望更改函数中变量的值时,您可以通过参考&#34;将变量传递给函数。你可以在这里阅读更多相关信息 - Pass by Reference
现在错误意味着您正在尝试将整数存储到作为指针的变量中,而不进行类型转换。您可以通过更改该行来消除此错误(但程序不会起作用,因为逻辑仍然是错误的)
int * b = (int *)6; //This is typecasting int into type (int *)
答案 1 :(得分:2)
也许你想这样做:
#include <stdio.h>
int change( int *b )
{
*b = 4;
return 0;
}
int main( void )
{
int *b;
int myint = 6;
b = &myint;
change( &b );
printf( "%d", b );
return 0;
}
答案 2 :(得分:1)
#include <stdio.h>
int change(int * b){
* b = 4;
return 0;
}
int main(){
int b = 6; // <- just int not a pointer to int
change(&b); // address of the int
printf("%d", b);
return 0;
}
答案 3 :(得分:0)
可能为时已晚,但作为其余答案的补充,仅为我的2美分:
void change(int *b, int c)
{
*b = c;
}
int main()
{
int a = 25;
change(&a, 20); --> with an added parameter
printf("%d", a);
return 0;
}
在指针声明中,您应该只分配其他变量的地址,例如&#34;&amp; a&#34; ..