这是好的做法吗?代码编译并运行,但我想知道这是否是一个很好的模拟实践 在 C 代码中,
- 我们写
const char *str1 = "abc";
- 然后,假设有一个指针变量
char *str2
指向动态分配的内存 - 然后我们执行
str1 = str2
所以现在str1
和str2
都指向动态分配的内存
所以现在我们已经丢失了指向“abc”
的任何指针。虽然在此代码中,我们可能不需要它,但我想知道处理这些问题的最佳推荐方法是什么。
总体问题是我们需要一个最初声明为 abc 的字符串,然后依赖于用户输入,我们可能希望使用用户提供的字符串。
最佳答案
绝对没问题。 const char *str1
意思是“一个可以修改的指针,指向不能修改的字符数据(通过这个指针)”。
因此,您可以将 str1
指向您喜欢的任何字符串,并且在不同的时间“重新设置”它以指向不同的字符串是有意义的。
显然,如果您的代码足够复杂,您可能会让读者难以弄清楚变量当前包含的内容,但所有变量都是如此。例如,您要小心那些有时指向字符串文字,有时指向动态分配内存的指针,因为指针是否应该被释放
ed可能并不总是很清楚。
如果您希望 str1
始终指向同一个字符串,您可以定义它 const char * const str1
(或 char const *const str1
以使 const
的位置始终保持一致)。在这种情况下,这不是您想要的,而且您没有声明 str1
const 的事实向读者表明了这一点。
关于更改 const char *str1 = "abc",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892407/