2022年字符串,字符数组,字符指针参考 .pdf

上传人:Che****ry 文档编号:35744746 上传时间:2022-08-23 格式:PDF 页数:4 大小:40.26KB
返回 下载 相关 举报
2022年字符串,字符数组,字符指针参考 .pdf_第1页
第1页 / 共4页
2022年字符串,字符数组,字符指针参考 .pdf_第2页
第2页 / 共4页
点击查看更多>>
资源描述

《2022年字符串,字符数组,字符指针参考 .pdf》由会员分享,可在线阅读,更多相关《2022年字符串,字符数组,字符指针参考 .pdf(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、字符数组,字符指针,字符串char a=hello world; char* b=hello world; string c=hello wolrd; coutaendl; coutbendl; coutsizeof(a)endl; 12 coutstrlen(a)endl; 11 coutsizeof(b)endl; 4 coutstrlen(b)endl; 11 coutsizeof(c)endl; 16 String不是基本的数据类型,所以strlen函数无法传入这个参数字符串操作是一个不小的主题, 在标准 C+ 中,string字符串类成为一个标准 , 之所以抛弃 char* 的字符串

2、而选用C+ 标准程序库中的 string类, 是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下的需要. Sizeof 是运算符,而 strlen则是一个函数, sizeof往往在编译的时候就已经把结果计算出来,给出strlen的函数原型int strlen(const char *str) int len = 0; assert(str != NULL);/debug模式下如果 str 为空,则抛出一个断言 while(*str+) len+; return len; C语言中,当一个字符串存入一个数组时,也把结束字符

3、0 存入数组一次判断该字符串是否结束的标志。字符串比字符多占一个字节可以用输入和输出函数一次性输入输出一个字符数组中的字符串,而不必用循环语句逐个输入输出每个字符格式化输出字符串是,输出项是字符数组名,不能写成数组中的元素输入函数的输入项直接写数组名,不写地址符& 输入函数遇到空格认为结束字符串指针和字符数组的区别字符串指针是一个变量,用于存放字符串的首地址名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 字符数组时有若干个数组元

4、素组成的,用于存放整个字符串不能对数据进行赋值, 只能在初始化的时候把字符串赋值给数组的各元素,赋值时只能对字符数组的各元素逐个赋值。定义字符数组时,编译系统为他分配内存单元,具有确定的地址,定义字符指针时,给指针变量分配内存单元, 在其中可以放一个字符变量的地址,如果未赋值地址则她没有指向一个确定的字符数据。两个字符数组变量不能直接赋值,只能通过移动下标操作字符数组的每个元素进行分别赋值两个字符值指针, 可以直接赋值, 即把一个字符指针所指向的地址赋值给另一个指针,则两个指针指向的同一个地址。 字符数据和字符串两者之间不能直接赋值字符和字符串处理的函数字符输入,输出函数:其函数在头文件std

5、io.h 中声明,使用前应包含头文件1. 字符串 strlen()的值,是否和她占据内存空间相同? strlen()函数的返回值不包含 /0 字符,所以它比他占据的空间小 1(所占据的空间可用 sizeof 确定) ,此函数声明在 中他的返回值是 size_t 型,声明在 中,Typedef unsigned int size_t; 2.strcpy函数存在的潜在风险,如何避免? strcpy(string1,string2);将string1 复制到 string2 中,这个复制包含 /0。风险之一就是 string2 的长度比 string1 长的话,string1 就不包含 /0,没有结

6、束符号会在以后使用中带来很大的问题可以增加一个判断 if(sizeof(string2)=sizeof(string1) strcpy(string1,string2) ;else pringtf(源字符串太长 ); 3. 不要试图输出一个没有字符串结束标志的数组,一下代码是错误的, char str = h, e, l, o; printf(%s,str); purts(str); 由于字符数组 str 没有结束符 /0,printf和puts 会在输出 hello 后,继续遍历后面的内存单元,直到遇到/0 为止,这样会输出不确定的字符4.strcpy(),strcat(),strcmp()

7、,strncpy(),strncat(),内部到 底 是如何运行的?名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - strcpy()是把源字符串复制到目标字符串,复制包含了终止符/0,目标字符串原有的信息将被删除,原字符串不变 strcat()把原字符串复制到目标变量的结尾,源字符串不变 strcmp(string1,string2 ) ,比较两个字符串,返回一个小于,等于,大于0的值,对应 string1 小于;等于,大于 s

8、tring2 ;目标字符串和员字符串不变 strncpy(string1,string2,n);把源字符串string2的前 n个字符复制到string1 中,此复制不包含终止符 /0 ,源字符串不变strncat(string1,string2,n);把源字符串 string2 的前n个字符复制到目标字符串string1 的结尾,源字符串不变String 类中集成函数的一些用法String s(hehe) ;Char chs=hehe String s(chs); string s(chs,1,3); string s2(s1); string s(chs,3)前三个String s(10,

9、k) 分配10个字符。初值都是 k s.assign(kdje) s.assign(asdsadsa,5) s1.Swap(s2); 互换s.append(hehe)添加字符串 a.push_back(k)添加一个字符s.insert(0, 头部); /在头部插入s.insert(s.size(), 尾部); /在尾部插入s.insert(s.size()/2, 中间); /在中间插入string s = abcdefg; s.erase(0,1); /从索引 0到索引 1,即删除掉了 a string str = s.substr(5,3);/从索引 5开始3个字节s.max_size() s.empty() s.at(i)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com