字符串
思维导图

前置代码

表现形式
字符串的表现形式为:
两个双引号括起来的所有字符.
比如printf("你好吗?\n");双引号中的就是字符串
复习
程序在我们内存中, 分为 栈区, 堆区, 代码区, 常量区.
根据我们前边所学, 代码区和常量区是不可修改的.存储形式
字符串的存储形式分2中,
数组存储和常量存储.
一般的, 我们的字面值不存储在常量区, 它是所见即所得的.
但是我们的字符串字面值, 是存储在常量区的.
如果我们想要修改我们的字符串, 就必须将字符串存储在我们的字符数组(char xxx[x]中.
小扩展
在我们使用scanf进行输入字符串的时候, 建议使用
scanf_s函数.
因为我们如果使用 scanf 进行输入, 假如我们的字符数组大小为4, 我们输入一个字符串为 hxhlb.
那么, 因为我们输入的字符串超长, 所以字符数组后边的内存空间会被覆盖掉.
这就是传说中的溢出. 如果在被攻击的时候, 函数返回地址被写入指定的地址, 那么我们的程序就会去执行指定的恶意代码, 很危险...
注意
数组下标都是从
0开始的!
字符串需要使用%s进行输出.
字符串都有结束符'\0'(0或者00都可以). 字符串中, 碰到结束符后, 代表字符串结束, 无论之后有没有数据.比如字符串为
Hades~, 我们改为Had\0s~, printf进行输出的时候, 只会输出Had.
大家可以那下边的代码做下测试.
char sVal[10] = { 'H', 'a', 'd', 'e', 's' };
sVal[3] = '\0';
printf("%s", sVal);在我们赋值字符串的时候, 比如我们要赋值为Hades, 长度为5, 但是我们的字符数组的长度必须为6, 因为我们的字符串需要有结束字符'0'.
如有错误,请提出指正!谢谢.
本文由 花心胡萝卜 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: 2016-10-06 at 03:13 pm