鱼C论坛

 找回密码
 立即注册
查看: 1354|回复: 2

[已解决]非const数据的地址赋给普通指针

[复制链接]
发表于 2023-10-4 21:36:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
非const数据的地址赋给普通指针,合法吗?在VS上编译还能是通过,只是警告,C Primer Plus 上却说这种行为是无效的
最佳答案
2023-10-4 21:36:24
这种行为是合法的,但是不建议这样做。非const数据的地址可以赋给普通指针,但是如果你尝试修改这个指针所指向的数据,就会导致未定义的行为。这是因为非const数据是可变的,而普通指针没有限制其修改所指向数据的权限。

在VS上编译可以通过,只是给出了警告,是因为这种行为可能会导致程序运行时出现问题。C Primer Plus 上说这种行为是无效的,可能是为了强调这种行为的风险性,以及提醒程序员应该遵循最佳实践,使用const关键字来限制指针的修改权限。

因此,建议在编程时,对于不需要修改的数据,应该使用const关键字来限制指针的权限,以提高程序的健壮性和可维护性。
屏幕截图 2023-10-04 212807.png
屏幕截图 2023-10-04 213241.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-4 21:36:24 | 显示全部楼层    本楼为最佳答案   
这种行为是合法的,但是不建议这样做。非const数据的地址可以赋给普通指针,但是如果你尝试修改这个指针所指向的数据,就会导致未定义的行为。这是因为非const数据是可变的,而普通指针没有限制其修改所指向数据的权限。

在VS上编译可以通过,只是给出了警告,是因为这种行为可能会导致程序运行时出现问题。C Primer Plus 上说这种行为是无效的,可能是为了强调这种行为的风险性,以及提醒程序员应该遵循最佳实践,使用const关键字来限制指针的修改权限。

因此,建议在编程时,对于不需要修改的数据,应该使用const关键字来限制指针的权限,以提高程序的健壮性和可维护性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-4 21:51:39 | 显示全部楼层
c程序使用const数据的地址给普通指针时,只会警告,而c++会报错
屏幕截图 2023-10-04 214846.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 23:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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