百科问答小站 logo
百科问答小站 font logo



C 语言中字符串常量的好处在哪里? 第1页

  

user avatar   Ivony 网友的相关建议: 
      

"Hello World"

这是一个表达式,其值是一个指针,这个指针指向了一个地址,这个地址可以按照字符串的方式来读取。

在程序开始运行的时候,就会自动开辟一块内存来储存这几个字符,并将这块内存的地址,作为"Hello World"这个表达式的值。


很显然,如果我们写下printf( "Hello World" );输出的却是:"Hello Ivony",这会是非常令人匪夷所思而且无法理解的对吧?

但是如果"Hello World"这个指针所指向的内存区域,是可以修改的,那么上面这种匪夷所思的情况就会出现。


把字符串常量的内存空间设置为只读的是一种非常自然的设计,因为在C语言里面,字符串表达式的值就是一个指针,如果这个指针指向的内存空间可以被修改,那就会出现当我们使用这个字符串的时候,它可能已经被别人改了?

而且事实上字符串本来就被设计为是个指针,那么把它放在堆栈上,赋值的时候复制来复制去,以求能够更改岂不是更不自然的设计?




  

相关话题

  C语言中指针与数组都可以用a[3]表示,那它们是不是相同? 
  C语言中指针与数组都可以用a[3]表示,那它们是不是相同? 
  .NET中如何通过Razor引擎生成这样的代码? 
  递归和循环相比耗费更多的空间,对于循环来说除了可以简化逻辑外还有什么优点吗? 
  Markdown 标准化的阻碍在哪里? 
  以前 CSDN 很好,但是现在只有提问的,都是没人回复,没人参与了,现在的程序员遇到问题用什么交流呢? 
  如果有两颗药丸,一颗吃了让你写代码100%不出错,另一颗吃了能让你100%发现并修改bug,选哪颗? 
  请问目前做windows桌面应用程序,MFC、QT、C#哪个更好? 
  可以自学Python吗? 
  Diffie-Hellman密码交换是如何运作的? 

前一个讨论
为什么那么多商家要基于 Chromium 做浏览器?
下一个讨论
C 字符串常量的空间是不需要回收的?





© 2025-04-12 - tinynew.org. All Rights Reserved.
© 2025-04-12 - tinynew.org. 保留所有权利