大佬教程收集整理的这篇文章主要介绍了将const指针定义为const字符串,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在first one(全球空间中的字符串)中,Ulrich声明该字符串应定义为:
const char _pcre_ucp_names[] = "blabla";
虽然已经在second one(函数中的字符串),他认为应该声明为:
static const char _pcre_ucp_names[] = "blabla";
UDP:
首先,我删除了C标签 – 这个问题对C和C都有效.所以我认为答案不能解释类/函数/文件范围中的静态意义是否相关.
在回答之前阅读文章.文章涉及内存使用 – 存储实际数据(在.rodata或.data部分),字符串应该重新定位(如果我们谈论unix / linux共享对象),是否可以更改字符串与否.
(1) const char *a = "...";
不太好
(2) const char a[] = "..."
#include <stdio.h> #include <String.h> int main(void) { const char s[] = "Hello"; /* Notice this variable is inside a function */ strcpy (s,"bye"); puts (s); return 0; }
在这种情况下,静态意味着不同的东西:这会创建一个变量,该变量在对同一函数的多次调用中持续存在.他的另一个例子显示了一个函数之外的全局变量.
编辑:
为了澄清,既然你编辑了你的问题,你不想使用const char * a =“String”的原因是你创建了一个额外的可写指针.这意味着,虽然您无法更改字符串的字符,但您仍然可以使指针指向完全不同的字符串.见下文:
const char *Hello = "Hello"; int main( int argc,char const *argv[] ) { Hello = "goodbye"; puts(Hello); return 0; }
该示例编译并运行.如果Hello应该是常量,那肯定不是你想要的.当然,你也可以写下这个来解决这个问题:
const char * const Hello = "Hello";
以上是大佬教程为你收集整理的将const指针定义为const字符串全部内容,希望文章能够帮你解决将const指针定义为const字符串所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。