我是否以错误的方式处理指针?我想通过将变量的地址传递给函数来更新变量的值.
void func(int *p){
int x = 3;
p = &x;
}
int main(){
int y = 0;
func(&y);
printf("\n Value = %d",y);
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
值= 0已退出:ExitFailure 11
Zel*_*don 10
您必须取消引用指针以替换指针指向的值.
看到:
#include <stdio.h>
void func(int *p){
int x = 3;
*p = x;
}
int main(){
int y = 0;
func(&y);
printf("\n Value = %d",y);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
要删除退出失败,请添加返回0; 声明进入主要功能.
请参阅运行示例:http: //ideone.com/rO8Gua
void func(int *p){
*p = 3;
}
Run Code Online (Sandbox Code Playgroud)
您正在设置p本地变量的地址x.首先,设置值p不会改变值y(该函数只接收地址的副本y,即使你改变了它,你也不会改变y).
其次,x是局部变量,因此在函数func终止后不能使用它的内容.
第三,你不能y以这种方式改变地址,因为它是一个局部变量.您需要将其声明为指针.