常量字符串的内容是不可以被修改的
来源:互联网 发布:淘宝文案策划怎么样 编辑:程序博客网 时间:2024/04/29 06:02
#include <stdio.h>int main(){char *cards = "JQK";char a_card = cards[2];cards[2] = cards[1];cards[1] = cards[0];cards[0] = cards[2];cards[2] = cards[1];cards[1] = a_card;puts(cards);return 0;}
运行结果:
运行结果出现错误。
修改代码如下:
#include <stdio.h>int main(){//char *cards = "JQK";char cards[] = "JQK";char a_card = cards[2];cards[2] = cards[1];cards[1] = cards[0];cards[0] = cards[2];cards[2] = cards[1];cards[1] = a_card;puts(cards);return 0;}运行结果:
运行结果正确。
为什么第一段代码会出现错误呢,因为“JQK”是一个字符串常量,存储在常量区,常量区存储的东西是不能够被修改的。代码
char *cards = "JQK";在存储器的栈区产生一个指针变量cards指向常量区的字符串“JQK”,所以后面不能通过指针来修改该字符串。那为什么代码
char *cards[] = "JQK";
的结果就是正确的呢?这句代码是在存储器的栈区创建一个数组cards,并为数组分配内存,在内存中存放字符串“JQK”的副本,这时“JQK”的副本是存放在栈区,而不是常量区,所以,可以对其进行修改。
为了避免后面的使用错误,一般用const修饰指向字符串常量的指针,如下:
const char *cards = "JQK"
1 0
- 常量字符串的内容是不可以被修改的
- 数组名是常量 常量是不可以被修改的
- 字符串常量不可修改,数组可修改的原因
- 不能修改常量字符串的内容
- 字符串常量不可以改变
- python实现不可修改的常量
- python实现不可修改的常量
- Java的String类为什么是不可变的以及字符串常量池
- &符号不能被用于左值, 全局变量的地址是唯一的, 不可以修改的一个左值
- window.showModalDialog()里面的内容是不可以复制的问题
- 字符串是不可变的
- 对字符串常量的修改
- 数组的length属性可读可写,字符串的长度length属性不可以修改
- char *指向的内容不可修改
- 为什么String类的值是常量,但内容可以修改?
- java String类的字符串常量不可变更
- split不可以用含有$的字符串来分割字符串
- 关于字符串指针不可修改的问题
- 【初学者常见问题】从外到内,从内到外(内部类剖析1)
- 老照片电子修复后丢失能找回吗
- android的单元测试
- 模块的基本结构
- Deeplearning 教程
- 常量字符串的内容是不可以被修改的
- ECMALL店铺地图功能-百度地图
- mysql数据库乱码解决
- IIS7.0站点/虚拟目录中访问共享
- 一段我自己常用的c#读取页面源码的方法
- 图元刷新闪烁问题
- angularJS学习小记(1)----99乘法表
- 动手学Javascript(1)——PopStar
- Qt的安装及共享文件设置