永发信息网

C语言 为什么这样用指针,系统会警告没有定义?

答案:4  悬赏:50  手机版
解决时间 2021-02-02 23:50
#include

void f(int *p)
{
int number=5;

p=&number;

}

int main(void)
{
int *p;

f(p);

printf("%d",*p);

return 0;
}
最佳答案
这个是一个典型问题了。从主函数的描述来看,你是想通过f函数改变*p的值然后输出。可是你的函数f对指针p进行赋值的操作不能传到主函数中的指针p中。f中的p是一个局部变量,通过f(p)这一步它只是获得了主函数中p的初值(其实初值也是乱码,你主函数定义p没有赋初值,建议不要这样做),事实上这两个p不是同一个变量。仔细观察会发现你的函数f只是对f中的p进行了赋值操作,并没有对主函数中的p进行操作。所以主函数中的p值没有发生改变。加上你没赋初值(重要),我认为你的系统应该提示的是指针p的值错误。
改的方法可以采用return的方式,或者传递参数的时候使用2级指针进行地址操作都是可以的。先说个大概方法,不明白还可以问我。
全部回答
1. 要在函数内改变指针指向的对象,函数参数需要时 int** p 2. 函数内部的临时变量,不能通过指针的返回,因为函数结束,number就销毁了
野指针问题 ,警告指针p未初始化、不是未定义
肯定需要先指向结构体变量的地址才可以。 定义了一个指针,而不初始化,编译不会报错,应该会有告警,但是运行就会出现错误的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
什么叫女人缘?
某社区3000名妇女,其中有100人吸烟,社区卫
看守所30天不放人在找律师有用吗
苏州吴江汽车站能停车吗?
真空化油器和一般化油器有什么区别?
昌乐昌顺驾校地址在什么地方,想过去办事
手臂肉松弛怎么办
宝城驾校地址在什么地方,我要处理点事
分期手机 每期203 每期11.5 费率百分之0.5 每
【泾怎么读】“泾”字读第一声还是第四声泾县
中国500强苏宁排第二,联想排后,为什么世界5
我今年冬天结婚,请问有没有像丝袜一样薄但还
[求助]方向盘打死倒车有异响,请问有朋友碰到
海丰驾校培训处报名处地址在什么地方,想过去
逆战中的韩文歌女的中间唱有nownownow
推荐资讯
儿童头上虱子怎么来的
甲省乙市丙医院使用丁药品企业生产的某抗菌药
中国那个省颜值最高??
Last Monday we
速求,万能的吧友吗,广饶哪里修车好
金龙航空大酒店-洗手间地址在什么地方,我要
和爸妈一起逛街的英语日记 初二上册
小天后舞蹈艺术培训中心地址好找么,我有些事
对女生说傻丫头我真的很想你,她回那我晚上开
上海南汇区有多少家铸造公司
IPV6可以在校外用吗?
47-2x=32.6这样的题
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?