字符串在内存中的存储
来源:互联网 发布:python 打包发布 编辑:程序博客网 时间:2024/05/22 11:54
今天看书的时候复习了一下以前关于字符串的东西,有些东西想不通,就做了一下实验,结果有点小发现分享一下。
书上本来做一个储存姓名的容器,用指针来保存。但是使用的时候是 const char name*=name_in[i];
我就想,为什么要加const 呢,文件中的人名是固定的,存进去了不能修改,使用const 在逻辑上是说的通的,但是,想了一下,字符串常量里面的值真的就不能改吗?
那如果在一个字符数组中保存一个字符串常量,再修改其中一个的值,结果会修改字符串常量吗?
做一个小实验:
<span style="font-size:18px;">#include <iostream>using namespace std;int main(){char a[10] = "abcde";int i;for (i = 0; i < 5;i++)cout << (void *)a[i] << endl;cout << endl;</span>
<span style="font-size:18px;">a[2] = 'f';for (i = 0; i < 5; i++)cout << (void *)a[i] << endl;system("pause()");return 0;}</span>程序中,第一个for循环是显示保存在数组中各个字符的地址。 之后修改了a[2]中的值,再次用for循环显示地址。
结果如下:
第一次的for循环,地址是连续的。
第二次的for循环,修改了a[2]。结果发现字符的地址被改了,但是,我是把a[2]中的'c'改为了'f',而'f'恰好是与a[4]中的'e'连在一起的。通过地址我们发现,它们的地址一个是65,一个是66。
所以,结论我的是,我们存在char 数组中的都是这些字符的地址,而这些地址都是连续的,而且这些字符似乎是之前就已经固定存在我们计算机中的,作为常量保存,内存中的值不能被改动,因此也叫字符常量。
当然,这只是我自己的说法,有错误请大神指出。
1 0
- 字符串在内存中的存储
- Java字符串在内存中的存储位置
- 字符串常量放在内存中的静态存储区
- 字符串在内存中的存储——C语言进阶
- 一般常量和字符串常量在内存中的存储
- 负数在内存中的存储
- 数据在内存中的存储
- 数据在内存中的存储
- 对象在内存中的存储
- 数组在内存中的存储
- 变量在内存中的存储
- 程序在内存中的存储
- 对象在内存中的存储
- 数据在内存中的存储
- 变量在内存中的存储
- 整数在内存中的存储
- 数组在内存中的存储
- 浮点数在内存中的存储方式
- Oracle11g 数据库导入导出之中文乱码问题的解决
- 树莓派2 gpio led blink实验
- c++11baohan线程安全的队列
- 局域网下 VMware虚拟机中linux(centos)桥接上网
- 寄存器
- 字符串在内存中的存储
- 文章标题
- 《apue》读书笔记 第三章 文件I/O
- Struts2 type="chain"的用法详细解释
- oracle数据库备份
- STM32学习第四天---开启固件库函数编程之旅
- 编码问题
- 两对匹配平面实验记录 [20151127]
- Shutdown程序源码学习笔记