- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ch11 字符串和字符串函数 字符串和字符指针 字符串常量 array point “I am handsome. 用一对双引号括起来的字符序列 被看做一个特殊的一维字符数组,在内存中连续存放,以空字符结束’\0’ 实质上是一个指向该字符串首字符的指针常量 char sa[ ] = “array”; //字符串常量的存储本质 char * sp = “point”; //字符串常量本身是个指针 字符串 一串以’\0’结尾的字符在C语言中被看作字符串 用双引号括起的一串字符是字符串常量,C语言自动为其添加’\0’终结符 C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符数组 每个元素都是字符类型的数组 char string[100]; 字符指针 指向字符类型的指针 char * p; 数组和指针可以等同看待,上面三者本质上是一回事 字符串和字符数组 const char m1[40] = { L, i, m, i, t, , y, o, u, r, s, e, l, f, , t, o, , o, n, e, , l, i, n, e, \, s, , w, o, r, t, h, ., \0 }; 字符串和字符指针 char sa[ ] = array; char * sp = point; printf(%s , sa); printf(%s , sp); printf(%s\n, string); 定义方法不同 char str[10]; char * ptr; 赋值方法和含义不同 char str[10]; strcpy(str,”china”); /*正确*/ str = ”china”; /*错误*/ char * ptr; ptr = ”china”; 在定义一个数组时,在编译时即分配单元,有确定地址,而定义一个字符指针变量时,如未对它赋初值,则其所指数据是不定的,因而使用是危险的。 例如,输入字符串时 char str[10]; scanf(%s, str); /*正确*/ char * a; scanf(%s, a); /*错误*/ 应为: char * a; char str[10]; a = str; scanf(%s, a); /*正确*/ 字符指针变量与字符数组的区别 初始化含义不同 1、char * pstr = ”china”; 等价于 char * pstr; pstr = ”china”; 2、char str[6] = ”china”; 不等价于 char str[6]; str[] = ”china”; 字符指针是变量,而数组名是地址常量 字符数组与字符指针的重要区别 字符数组与字符指针的重要区别 用字符串初始化字符数组,是从静态存储区把一个字符串复制给数组,用字符串初始化字符指针,只是复制字符串的地址 不想通过字符指针修改其所指向的字符串,建议: const char * p1 = “Klingon”; //推荐使用 示例 char sa[ ] = This is a string; char * sp = This is a string; strcpy (sa, Hello); sp = Hello; sa = “Hello”; 非法 数组名是常量,不能对它赋值 字符指针-先赋值,后引用 定义字符指针后,如果没有对它赋值,指针的值不确定。 char * s ; scanf(“%s”, s); char * s, str[20]; s = str; scanf(“%s”, s); 定义指针时,先将它的初值置为空 char * s = NULL ; 综合实例:定义字符串 // strings.c – 使用字符串与用户交互 #include stdio.h #define MSG You must have many talents. Tell me some. // a symbolic string constant #define LIM 5 #define LINELEN 81 // maximum string length + 1 综合实例:定义字符串 int main(void) { char name[LINELEN]; char talents[LINELEN]; int i; // initiali
您可能关注的文档
最近下载
- 教科版科学五年级下册第三单元 环境与我们 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一体化).docx VIP
- 2024年南京信息职业技术学院单招数学考试试题及答案解析.docx VIP
- 音韵学讲义教案第二章音韵学的基本知识.doc
- 教科版科学五年级下册第二单元 船的研究 大单元整体教学设计学历案教案附作业设计(基于新课标教学评一体化).docx VIP
- 石油化工3503电缆安装质量验收记录.docx VIP
- 2025年商铺租赁合同范本全新修订.docx VIP
- 《中医病证分类与代码》(2020修订版).docx VIP
- 中医食疗 糖尿病痛风类风湿的中医食疗 课件.ppt VIP
- 安徽中汇发新材料有限公司35万吨年轻烃裂解制苯乙烯项目(一期).pdf VIP
- 2025年南京信息职业技术学院单招语文考试题库及答案解析.docx VIP
原创力文档


文档评论(0)