问题描述
- 自己对一个const定义的数组不能更改,用库函数却能进行相应操作,
-
自己对一个const定义的数组不能更改,用库函数却能进行相应操作,比如strcpy(),其实现也是一个个赋值的,为什么自己用赋值语句就不行呢?有点疑问,没搞清楚,请大侠帮小弟解解惑,感激不尽。 前提我是知道const的含义的,知道其用法的。
解决方案
http://blog.csdn.net/heyabo/article/details/8745942
根据C++标准,对于修改const变量,属于:未定义行为(指行为不可预测的计算机代码),这样一来此行为取决于各种编译器的具体实现(即不同编译器可能表现不同)。
不要纠结这个问题,不要故意做危险而不可预测的编码。
解决方案二:
这是因为库函数,比如你所说的strcpy()函数,在参数传递时已经将数组按指针进行了转换。库函数不再认为指针所指的区域是常量!
但实际的结果呢?你可以看看修改后你的数组的值是否改变?这部分会有一些奇怪的现象的,例如:看着是相同的地址,但显示的字符串是不相同的。
解决方案三:
strcpy的时候进行的地址操作,你const定义的数组,不会直接修改值
时间: 2025-01-07 17:29:09