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 ...
随机推荐
- Cocos Studio is EOL'd
Cocos Studio is EOL'd Cocos Studio has been EOL'd as of April 2016. There will be no more releases o ...
- leetcode第一刷_ Flatten Binary Tree to Linked List
提示中说明了,改动后的链表相当于原树的前序遍历结果.前序遍历是根左右,因为要把转换后的左子树链接到根节点的右子树上,因此进入递归之后要先把节点的右子树保存下来,然后进入左子树,左子树转换后应该返回最后 ...
- Faiss学习:一
在多个GPU上运行Faiss以及性能测试 一.Faiss的基本使用 1.1在CPU上运行 Faiss的所有算法都是围绕index展开的.不管运行搜索还是聚类,首先都要建立一个index. import ...
- Makefile整理
Makefile里的subst 用法是$(subst FROM,TO,TEXT),即将TEXT中的东西从FROM变为TO Makefile中的字符串处理函数 格式: $(subst <from& ...
- uploadfiy 3.0
uploadfiy v3.0中按钮可以轻易修改成中英文,而不至于想2.xx版本中,需要对中文进行编码. 3.0中圆圆的按钮,很漂亮. 但是,3.0中去掉了原来的onComplete函数,并且也去掉了从 ...
- Ubuntu apt-get方式安装Subversion
按照官方文档 http://subversion.apache.org/packages.html 使用apt-get安装方式: 1.安装Subversion: sudo apt-get instal ...
- VB总结1-事件过程之键盘鼠标过程
事件过程:参考 (http://baike.baidu.com/view/1523990.htm) 事件是指对象对于外部动作的响应,当对象发生了某个事件,就会执行与此对象的这个事件相应的代码,这段代码 ...
- JS禁止后退键(backspace)使浏览器后退
背景说明: 今天项目测试中,同事发现一个Bug,当键盘敲下后退键(Backspace)后,浏览器自动后退,不符合需求,故建议禁止浏览器后退键. 提出需求: 当键盘敲下后退键(Backspace)后 1 ...
- CentOS 查看系统版本号
查看centos版本: cat /etc/issuecat /etc/redhat-release 查看系统位数: getconf LONG_BIT 查看内核版本: uname -r cat /pro ...
- git编译
Git 是一个自由.开源.高效的分布式版本控制系统(VCS),它是基于速度.高性能以及数据一致性而设计的,以支持从小规模到大体量的软件开发项目.Git 是一个可以让你追踪软件改动.版本回滚以及创建另外 ...