`
bcyy
  • 浏览: 1832292 次
文章分类
社区版块
存档分类
最新评论

文字常量区、字符串常量、地址

 
阅读更多

可以:

#include <stdio.h>
int main(void)
{
	char str[8] = {0};
	str[0] = *"jiang";
	printf("%s\n", str);
	return 0;
}

输出结果是:

j

2012/5/16 更新

补充一个例子(正确):

#include <iostream>
using namespace std;

int main(void)
{
	cout << "0123456789"[5] << endl;

	return 0;		
}

输出结果是:

5


2012/7/21

1、通过:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

int main(int argc, char **argv)
{
	char str[10];
	char *p = str;
	strcpy(p, "wwwww");
	cout << p << endl;

	return 0;
}


2、不通过:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

int main(int argc, char **argv)
{
	char str[1];
	char *p = str;
	strcpy(p, "w");	//Debug Error: Stack around the variable 'str' was corrupted
	// "w"占两个字节,而str是一个字节的字符数组
	cout << p << endl;

	return 0;
}

这个我感到奇怪,strcpy的第一个参数同样是指针,与第一个程序比较,难道这个p记录的信息还挺多?还扯上str了?还是strcpy本身就要检查?待解答。


3、通过:

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;

int main(int argc, char **argv)
{
	char *p = NULL;
	p = "aaaaa";
	cout << p << endl;

	return 0;
}

"aaaaa"在文字常量区上,注意这里若用

strcpy(p, "aaaaa");

将出现运行时错误(编译通过),非法访问内存区域。

分享到:
评论

相关推荐

    最新单片机仿真 用P0口显示字符串常量

    最新单片机仿真 用P0口显示字符串常量最新单片机仿真 用P0口显示字符串常量最新单片机仿真 用P0口显示字符串常量最新单片机仿真 用P0口显示字符串常量最新单片机仿真 用P0口显示字符串常量最新单片机仿真 用P0口显示...

    c++常量字符串编译期加密

    源实现参考网络资源;基于源实现解决了其重入问题。 语言环境:c++14 测试环境:在VS2019、ubuntu(wsl) g++(理论上支持c++14的都可以)

    用P0口显示字符串常量.zip

    用P0口显示字符串常量.zip

    292-用P0口显示字符串常量(51单片机C语言实例Proteus仿真和代码)

    292-用P0口显示字符串常量(51单片机C语言实例Proteus仿真和代码)292-用P0口显示字符串常量(51单片机C语言实例Proteus仿真和代码)292-用P0口显示字符串常量(51单片机C语言实例Proteus仿真和代码)292-用P0口显示字符串...

    基于Keil+51用P0口显示字符串常量.rar

    基于Keil+51用P0口显示字符串常量.rar基于Keil+51用P0口显示字符串常量.rar基于Keil+51用P0口显示字符串常量.rar基于Keil+51用P0口显示字符串常量.rar基于Keil+51用P0口显示字符串常量.rar基于Keil+51用P0口显示字符...

    第4节: 揭秘JVM字符串常量池和Java堆-01

    第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: 揭秘JVM字符串常量池和Java堆-01第4节: ...

    字符数组的存储方式 字符串常量池.docx

    为了避免每次都创建相同的字符串对象及内存分配,JVM内部对字符串对象的创建做了一定的优化,在Permanent Generation中专门有一块区域用来存储字符串常量池(一组指针指向Heap中的String对象的内存地址)。...

    单片机课程设计——用P0口显示字符串常量.zip

    AT89S52单片机C语言应用

    C语言字符串处理函数

    int str cat char str const char args 拼接多个字符串常量存入str 1成功 0失败 int strarray cat char arr [str max len] int i char str 把二维arr字符串数组拼接成一个串 i是第一维的长度 存入str int replacate ...

    android studio错误: 常量字符串过长的解决方式

    主要介绍了android studio错误: 常量字符串过长的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    C语言程序设计-字符串与字符数组.pptx

    字符串常量用双引号作定界符,系统自动在末尾加一个空字符结束符’\0’,来作为字符串的结束标记-“”称为空串。 3-1 字符串 在字符串常量的书写中,双引号只充当界限符,它并不是字符串的一部分。如果字符串中含有...

    java三种字符串处理差别

    java字符串三种处理方式区别String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)

    jvm如何处理长字符串

    jvm如何处理长字符串?java的classs文件中,constant_utf8_info的长度是u2,也就是说,一个字符串最长是65535个字节,但是,在本机做测试,超过这个长度的字符串也是允许的,原因是什么?

    java 创建字符串类

    java 创建字符串类 java 创建字符串类 java 创建字符串类

    C语言程序设计-指针与字符串.pptx

    用字符串常量为字符指针初始化,其形式与字符数组的初始化类似,却有本质上的区别:字符数组获得字符串所有的字符,而字符指针获得字符串首地址,与字符串内的字符无关。 【例8.4】用指向字符串的指针变量完成两个...

    MySQL数据库:常量、变量.pptx

    字符串是指用单引号或双引号括起来的字符序列,分为ASCII字符串常量和Unicode 字符串常量。 ASCII字符串常量是用单引号括起来的,由ASCII字符构成的符号串。举例:‘hello’,‘How are you!’ Unicode 字符串常量与...

    判断2个字符串是否含有相同的字符

    这是针对不知道字符串大小并且不占用额外空间的做法,需要非常繁琐的操作,要加很多标记,越界判断也会有些麻烦(结合优势么,用字符串常量而不是栈空间中的字符数组,有'\0'——就好判断了!) (关于空间的占用,...

    Delphi开发技巧之-字符串

    检查一个字符串是否为有效Email地址 检查字符串是否为有效的IP地址 检查字符串是否为有效的文件名或目录名 检查字符串是否为有效的日期或时间值 检查字符串是否为有效的浮点数 检查字符串是否数字 比较两个字符串的...

    C语言-字符串常量(超详细)

    C语言-字符串常量(超详细)

Global site tag (gtag.js) - Google Analytics