首页 > 其他分享 >关于常量与字符串常量存储方式的一点看法

关于常量与字符串常量存储方式的一点看法

时间:2022-10-26 21:47:52浏览次数:71  
标签:存储 常量 代码段 内存 字符串 name

首先,毫无疑问,即使是常量(字符串常量)也是要占据空间的。

 

一般来说,基本类型(整型、字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存。(代码段是只读的,而且不允程序员获取代码段的地址,所以在c++中,尽量不为const分配数据段的内存,但是一旦取cosnt的地址,就不得不分配了,但是读const的时候,依然是从代码段读取那个立即数)。当然,占代码段的内存一般不在我们常说的“占内存”范围中。

 

而字符串常量或基本类型的常量数组占用的是数据段内存。

程序中但凡出现“XXX”形式,这都是代表字符串常量,是要事先存储在程序的只读数据区的。

void  test(){

  char name[32] = "hello,world";  // "hello,workd" 存储在程序的只读数据区, name 存储在test函数的栈区。

}

其实是有两份存在的。

string name = "hello,world";同样是存在两份的,与char name[32]的区别在于: string的变量即对象,本身是在栈区,此栈区中有个指针变量,指向堆区(动态内存分配),此堆区正是用来复制接收存储在只读数据区的字符串常量的。

 

char name[] = {'r', 'd', 'n',‘\0’};这种写法则只存一份。

标签:存储,常量,代码段,内存,字符串,name
From: https://www.cnblogs.com/ylww/p/16830155.html

相关文章

  • 利用栈求递增子字符串长度
    901. OnlineStockSpanMedium24552FavoriteShareWriteaclass ​​StockSpanner​​ whichcollectsdailypricequotesforsomestock,andreturnsthe span of......
  • 连续子数组的最大和+如何处理以字符为分隔符的字符串
    题目描述一个非空整数数组,选择其中的两个位置,使得两个位置之间的数和最大。如果最大的和为正数,则输出这个数;如果最大的和为负数或0,则输出0输入描述:3,-5,7,-2,8输出描述:......
  • 存储引擎
    表在数据库中的存储方式。存储引擎只存在mysql中,(Oracle中有对应机制,但是不叫存储引擎)。完整的建表语句:CREATETABLEmytable(idINT(10)PRIMARYKEY,user......
  • 一个字符串用空格作为分隔符,可以用while(cin>>Input)进行输入
    题目描述给定一个句子(只包含字母和空格),将句子中的单词位置反转,单词用空格分割,单词之间只有一个空格,前后没有空格。比如:(1)“helloxiaomi”->“mixiaohello”输入描......
  • 利用map对数组中的元素及其下标进行存储
    题目描述小摩有一个N个数的数组,他想将数组从小到大排好序,但是萌萌的小摩只会下面这个操作:任取数组中的一个数然后将它放置在数组的最后一个位置。问最少操作多少次可以使得......
  • 【Azure 存储服务】存储在Azure Storage Table中的数据,如何按照条件进行删除呢?
    问题描述如何按条件删除StorageTable 中的数据,如果Table中有大量的条记录需要删除,Java代码如何按条件删除Table中的数据(Entity)?(通过AzureStorageExplorer工具是......
  • minio 对象存储部署一些说明
    一个minio简单部署使用说明,以前写过一些简单的,主要扩展下,对于优化相关的具体可以参考官方的以及linux相关优化的文章参考部署  可靠性玩法可以开启多版本开启......
  • 字符串--移除k个数使得剩下的数最大
    有一十进制正整数,移除其中的K个数,使剩下的数字是所有可能中最大的。假设:字符串的长度一定大于等于K字符串不会以0开头 输入描述:一行由正整数组成的数字字符串,和......
  • DP--字符串变换
    给定两个字符串,已知可以使用三种方式进行变换1.插入一个字符2.删除一个字符3.更改一个字符请设计一个算法,找到两个字符串之间的经历几次最小变换,可以字符串1转换成字......
  • DFS--同一个方向找出所有子字符串的个数
     字符迷阵是一种经典的智力游戏。玩家需要在给定的矩形的字符迷阵中寻找特定的单词。在这题的规则中,单词是如下规定的:1.在字符迷阵中选取一个字符作为单词的开头;2.选取......