栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

字符串和字符I/O

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

字符串和字符I/O

字符串

字符串是以空白字符()结尾的char类型数组

字符串字面量(字符串常量)

使用双引号括起来的内容称为字符串字面量,也叫做字符串常量,双引号中的字符和编译器自动加入末尾的字符,都作为字符串存储在内存中。

char txt[50]="Hello,how""are you""today";
// 等价于
char txt[50]="Hello,how are you today";

//使用双引号
printf("my name is Jack."); //my name is "Jack".

字符串常量属于静态存储类别,这说明如果在函数中使用字符串常量,该字符只会被存储一次,在整个程序的生命期存在,即使函数被调用多次。用双引号括起来的内容被视为指向该字符串存储位置的指针;这类似于把数组名作为指向该数组位置的指针

#define TXT "hello"
int main()
{
	char arr[] = TXT;
	const char* p = TXT;
	printf("str1=%pn", "hello");  //打印字符串1
	printf("TXT=%pn", &TXT);
	printf("arr=%pn", arr);
	printf("p=%pn", p);
	printf("str2=%p", "hello");    //打印字符串2
	return 0;
}

数组与指针
//初始化指针尽量使用const限定符修饰
const char* p="Hello";
p[1]='K';

编译器可以使用内存中的一个副本来表示所有完全相同的字面量,如果修改指针指向的值,可能导致后续字面量发生改变,或者引发内存错误如果需要修改字面量,就不要将指针指向字面量。

字符串数组
int main(void)
{
	const char* p[] = {"Apple","Pear","Orange"};
	char arr[][10] = { "Apple","Pear","Orange" };
	printf("%zd %zd", sizeof(p), sizeof(arr));
	return 0;
}

p中的指针指向初始化时使用的字面量位置,这些字面量被存储在静态内存中;而arr存储字面量的副本,也就是每个字符串被存储两次。arr所使用的元素大小必须统一,而且必须是最长字符串的大小。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529607.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号