重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不能在函数的栈变量中修改,就直接以指针/引用方式传参就可以了。
为达拉特等地区用户提供了全套网页设计制作服务,及达拉特网站建设行业解决方案。主营业务为成都网站设计、成都网站制作、达拉特网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
首先,我们可以在函数外面定义变量,就是全局变量。局部变量可以与全局变量同样命名。但是优先级是局部变量优先。但是局部变量的生命周期是整个结构内。全局变量是整个程序结束,才释放。
endif 上面位于.H 文件中,每个全局变量都加上了xxx_EXT的前缀,xxx代表模块的名字。
1、但是,如果在函数中定义了跟全局变量名称一样的局部变量,则函数中修改的是局部变量,全局变量的值是无法被修改的。
2、栈区存放auto变量,也就是临时变量。堆区存放堆变量(也就是malloc的地址,手动分配内存的方式)。代码区存放你写的程序代码。而静态区存放的就是全局变量和常量的,(静态区也细分为全局区和常量区(在linux下))。
3、所以上电后全局变量数值都是定值。先搞清RAM和ROM的区别,ROM是只读,就是说里面的内容是不能变的,断电后信息不丢失,RAM断电后信息全部丢失;如果全局变量在ROM里面,那么它的值已经是固定死的,除非是一些IAP ISP功能。
4、TIME[2]是实参,调用时只把它的值拷贝给了局部变量b,函数中操作的是b而不是TIME[2],所以TIME[2]不会有变化。
对于全局变量,如果在函数中修改了值,则全局变量的值就会被改变,在其他函数中访问的就是修改后的值;但是,如果在函数中定义了跟全局变量名称一样的局部变量,则函数中修改的是局部变量,全局变量的值是无法被修改的。
TIME[2]是实参,调用时只把它的值拷贝给了局部变量b,函数中操作的是b而不是TIME[2],所以TIME[2]不会有变化。
void password(char *pass){ scanf(%s,&pass);} 不能在函数的栈变量中修改,就直接以指针/引用方式传参就可以了。
如果通过函数传参方式调用,并且不是传的指针,那就不会改变原来的值,如果想改变全局变量的值,可以直接在函数中使用,不需要传参。