C 字符串常量和字符串变量定义和区别
字符串常量
定义:在一个双引号""内的字符序列或者转义字符序列称为字符串常量
例如:"HA HA!" "abc" "\n\t"
这些字符串常量是不能改变的,如果试图改变指针所指向的内容是错误的
因为字符串常量是存在静态内存区的,不可以改变的。
如定义字符串常量:
char* a="i love you.";
*a='h'; //试图改变它
这是错误的。系统显示:
string.exe 中的 0x00d71398 处未处理的异常: 0xC0000005: 写入位置 0x00d7573c 时发生访问冲突或者报该内存不能为written。
字符串变量
在C语言中没有纯粹的c语言字符串变量,可以通过一个字符数组来体现,这样就
可以对字符数组中的内容进行改变!如上式可改为。
如定义字符串变量:
char a[]="i love you.";
*a='h';
/**
*字符串常量
*程序将会报错,不能改变字符串常量值。
*修改失败
**/
#include <stdio.h>
#include <stdlib.h>
void main()
{
char *str = "abcdef";
printf("%s,%p\n", str,str);
*str = 'C'; //修改第三个字符为大写
printf("%s,%p\n", str);
}
/**
*字符串变量
*程序将改变字符串变量中其中的值。
*修改成功
**/
#include <stdio.h>
#include <stdlib.h>
void main()
{
char str[] = "abcdef";
char *p_str = str;
printf("%s\n", p_str);
*(p_str+2) = 'C'; //修改第三个字符为大写
printf("%s\n", p_str);
}
小结:
字符串常量:不能对值修改。 常量:"abc" 、123、char *str = "abcdef"、"\n"
字符串变量:能对值修改 。 变量:char c = "a"、char arr[] = "abc"
C 字符串常量和字符串变量定义和区别的更多相关文章
- Python进阶:如何将字符串常量转化为变量?
前几天,我们Python猫交流学习群 里的 M 同学提了个问题.这个问题挺有意思,经初次讨论,我们认为它无解. 然而,我认为它很有价值,应该继续思考怎么解决,所以就在私密的知识星球上记录了下来. 万万 ...
- java字符串常量池——字符串==比较的一个误区
转自:https://blog.csdn.net/wxz980927155/article/details/81712342 起因 再一次js的json对象的比较中,发现相同内容的json对象使用 ...
- const常量与define宏定义的区别(转)
#define RADIUS 100; const float RADIUS = 100; (1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. ( ...
- c++中变量声明和变量定义的区别。2016年12月6日
整个流程: 1.程序告诉cpu,程序将要使用一个变量.(暂时不一定用到,先说一下.) 2.程序告诉CPU,程序现在就要使用一个变量.(现在就用) 3.cpu按照这个变量的类型,把内存划分出几个单位(b ...
- java字符串类型常量拼接与变量拼接的区别
前言 首先看下下面代码结果是什么? package cn.demo_01; public class StringDemo02 { public static void main(String[] a ...
- 使用Microsoft Roslyn提取C#和VB.NET源代码中的字符串常量
Microsoft Roslyn是微软.NET“编译器即服务(Compiler as a Service)”的主要产品,它提供了开放的编译器API,并为源代码产生.分析和重构提供了新一代的语言对象模型 ...
- java8中字符串常量以及GC相应处理机制
目录 1,常量池 1.1, class文件常量池 1.2, 运行时常量池 1.3,字符串常量池 String.intern() -XX:StringTableSize 2,使用new关键字和使用字符串 ...
- C++常量(C++数值常量、字符串常量、符号常量)
http://see.xidian.edu.cn/cpp/biancheng/view/104.html 字符串常量 用双撇号括起来的部分就是字符串常量,如"abc"," ...
- 彻底搞清楚class常量池、运行时常量池、字符串常量池
彻底搞清楚class常量池.运行时常量池.字符串常量池 常量池-静态常量池 也叫 class文件常量池,主要存放编译期生成的各种字面量(Literal)和符号引用(Symbolic Reference ...
随机推荐
- Python开发接水果小游戏
我研发的Python游戏引擎Pylash已经更新到1.4了.如今我们就来使用它完毕一个极其简单的小游戏:接水果. 下面是游戏截图: 游戏操作说明:点击屏幕左右两边或者使用键盘方向键控制人物移动.使人物 ...
- ZH奶酪:putty远程登录Linux服务器非常慢
11.pytty远程登录Linux服务器非常慢 http://www.it165.net/os/html/201209/3425.html 12.启动SSHD服务报错 http://blog.chin ...
- Spring -- 三种配置方式
1.Explicit configuration in XML:显示的XML配置. 优点: 1)XML配置方式进一步降低了耦合,使得应用更加容易扩展,即使对配置文件进一步修改也不需要工程进行修改和重新 ...
- WPF使用DEV之TreeListControl---加入复选框
1.绑定的Class中加入一个Bool类型的属性 2. 该属性无需初始赋值,你执行就可以看到如图: Bool类型数据自己主动变成了复选框 watermark/2/text/aHR0cDovL2Js ...
- PHPstorm最常用的快捷键,提高开发效率
PHPstorm最常用的快捷键,提高开发效率 •ctrl+b 跳到变量申明处 •Ctrl + E 打开最近文件 •Ctrl + R 替换. •Ctrl + D 复制粘贴.将当前行或者选择的内容复制粘贴 ...
- 〖Windows〗Linux的Qt程序源码转换至Windows平台运行,编码的解决
在中国大陆,Windows默认的编码是gb2312,而Linux是UTF8: 多数情况下,把Linux上的程序转换至Windows上运行需要进行编码转换才能正常显示: 而其实大可以不必的,同样,文件使 ...
- 简单的Stack
自己实现的简单的Stack.没有查空满.用于算法考试 #include<iostream> using namespace std; const int MAX = 100; struct ...
- 使用spring的事务的三种方法
1.编程式事务管理 spring的配置文件 <!-- 事务管理器 --> <bean id="transactionManager" class="or ...
- java 调整jvm堆大小上限
针对单个类,eclipse中调整jvm的运行参数,加上这么一句: -Xmx80m 即可把堆上限调整到80m. 关键字: BEA JRockit
- pip简单配置
pip安装Python模块的工具,等价于Redhat中的yum! 01.下载 百度云盘:http://pan.baidu.com/s/1eRHGBfk ###相关的 Linux ...