搜索
bottom↓
回复: 13

可以用指向static变量的指针,在外部修改该static变量吗

[复制链接]

出0入0汤圆

发表于 2017-5-19 15:35:53 | 显示全部楼层 |阅读模式
C语言中,一个指针指向某个static变量,那么在该static变量作用域外部,可以通过指针去修改这个变量的值吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2017-5-19 15:38:18 | 显示全部楼层
应该是可以的,很多分模块设计就是这样传递数据。

出0入0汤圆

发表于 2017-5-19 15:38:33 | 显示全部楼层
本帖最后由 lo-lo25 于 2017-5-19 15:39 编辑

前面重复发了.模块封装都是这样做到的。

出0入8汤圆

发表于 2017-5-19 15:39:05 | 显示全部楼层
可以的。

出0入0汤圆

发表于 2017-5-19 15:43:12 | 显示全部楼层
当然可以啦,就因为他是static的,你才可以在作用域外边修改他而不会导致内存非法访问

出0入0汤圆

发表于 2017-5-19 16:23:41 | 显示全部楼层
对于static而言,作用域仅仅是外部不可见而已,并不意味着指针指不到。

出0入0汤圆

 楼主| 发表于 2017-5-19 16:33:34 | 显示全部楼层
明白了,非常感谢大家的解答

出0入0汤圆

发表于 2017-5-19 16:44:03 | 显示全部楼层
static的声明有点多义,若在全局变量中用了了static修饰,即此变量只能在本文件中使用。如果此时用一个外文件的指针去指向它,应该修改不了。要测试一下。

出0入0汤圆

发表于 2017-5-21 12:12:41 来自手机 | 显示全部楼层
gzcrc 发表于 2017-5-19 16:44
static的声明有点多义,若在全局变量中用了了static修饰,即此变量只能在本文件中使用。如果此时用一个外文 ...

指向static变量的指针当然可以修改啊,只是不太规范而已。既然要外部修改又何必定义成static呢

出0入0汤圆

发表于 2017-5-21 12:34:24 | 显示全部楼层
指针访问应该可以,需要更改就不要声明称static了

出0入0汤圆

发表于 2017-5-21 20:48:32 | 显示全部楼层
可以加个 get set 函数封装一下变量 再给外部引用

出300入477汤圆

发表于 2017-5-21 21:56:35 来自手机 | 显示全部楼层
miaoguoqiang 发表于 2017-5-21 12:12
指向static变量的指针当然可以修改啊,只是不太规范而已。既然要外部修改又何必定义成static呢 ...

这是典型的用法啊,其实就是不想把这个东西声明为全局变量呗。只允许外面调用接口函数得到它的指针来间接操作。

出0入0汤圆

发表于 2017-5-21 23:39:43 来自手机 | 显示全部楼层
最好不要用指针提供给外面的使用。可以用11楼的方法get set来实现。直接对外给指针很不安全。

出0入0汤圆

发表于 2017-5-22 18:15:30 | 显示全部楼层
一般还是利用暴露参数的方式,增加个get或set函数来修改
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 15:34

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表