- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言_ch__通过指针引用字符串.ppt
char string[] = I love China!; 等价于: char string[20]; strcpy(string, I love China!); I love China! 是常量字符串 const char *p; //p是指针变量,p指向的目标空间的内容不可变化 char * const p; //p是指针常量,p的值不可变,但它指向目标的值可变 while(*srcStr != \0) 推荐= while(*srcStr != 0) (\0的ASCII代码为0)= while(*srcStr) 不推荐 [1]:char *destCopy把dest的首地址保存下来,while循环之后dest指向字符串末尾的’\0’ [2][3]:assert的作用是计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。 使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。 在调试结束后,可以通过在包含#include 的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下: #include #define NDEBUG #include * * * * 上一节我们学到了 指针与二维数组 a[i]=*(a+i) a[i][j]=*(*(a+i)+j) a、a+i、*(a+i)、a[i]、*(*(a+i)+j)等怎么理解 行指针与列指针 如何定义一个指向二维数组的指针 行指针:指向一维子数组,int (*p)[10]; 列指针:指向元素,int *p; 如何向函数传递一个指向二维数组的指针 * * 第8章 善于利用指针 8.1 指针是什么 8.2 指针变量 8.3 通过指针引用数组 8.4 通过指针引用字符串 8.4.1 字符串的引用方式 8.4.2 字符指针作函数参数 8.4.3 使用字符指针变量和字符数组的比较 8.5 指向函数的指针 8.6 返回指针值的函数 8.7 指针数组和多重指针 8.8 动态内存分配与指向它的指针变量 8.9 有关指针的小结 字符指针字符串(char *string) 字符串常量 strcpy源码 * * * * 回忆字符串 一串以\0结尾的字符在C语言中被看作字符串 字符串常量是用双引号括起的以‘\0’结束的一串字符。 在程序开始运行时分配在全局数据区的文字常量区,存储在无名数组中。 相同字符串常量只有一个副本。 C语言表示字符串的两种表示法 字符数组 字符指针 * * 代码区(code area) 操作系统内核区 全局数据区 堆区heap 栈区stack 文字常量区 未初始化静态变量区 已初始化静态变量区 低址 数据区 字符串常量 没有初始化的全局变量和静态变量 初始化的全局变量和静态变量 malloc() free() 局部变量 函数的二进制码 内存分配 * * char[] string 例 例8.16 int main() { char string[] = I love China!; printf(%c\n, string[7]); printf(%s\n, string); } 运行时输出: C I love China! * * char* string 例 例8.17 int main() { char *string = I love China!; printf(%s\n, string); } 把存放字符串的无名数组的首地址赋给string。 char *string = I love China!; 等价于: char *string; string = I love China!; * * 练习 下面各语句中,能正确进行字符串赋值操作的语句是( ) ?① char s[5] ={ABCDE};??????????? ② char s[5] ={A,B,C,D,E}; ③ char *s;s=ABCDE;?????????? ④ char *s;scanf(%s, s); ⑤char s[8]; s = ABCDE; Q: printf(%s\n, abc+1); 输出:bc ③ * * 8.4.2 字符指针作函数参数 例8.20 用函数调用实现字符串的复制。 (1) 用字符数组作参数。 * * strcpy函数 /* Copies the string src into the spot specified by dest; ? assumes enough room. ? 目标指针空间必须大于源字符串空间。 在调用前请确认目标指针空间是
您可能关注的文档
- cityofangels.ppt
- CI教学第讲基本组合设计.ppt
- CJ开车后项目.ppt
- CK报警主机技术手册(DOC可编).doc
- CL_面板中文说明.ppt
- CL面板中文说明.ppt
- CMS与BIOS故障(DOC可编).doc
- CNASRL实验室认可规则(DOC可编).doc
- CNAS认可指南(DOC可编).doc
- CNCAP碰撞测试结果全记录(截至第三批)(DOC可编).doc
- 四川省成都市石室中学2025届高三上学期10月月考 化学 Word版无答案.docx
- 湖南省衡阳市衡阳县部分学校2024-2025学年高一上学期第一次联考地理(A卷) Word版无答案.docx
- 四川省成都市新津中学2024-2025学年高二上学期10月月考语文 Word版无答案.docx
- 湖南省长沙市长郡中学2023-2024学年高一上学期期中物理 Word版无答案.docx
- 湖北省新八校协作体2025届高三上学期10月联考政治 Word版含解析.docx
- 四川省成都市新津中学2024-2025学年高三上学期10月月考生物Word版无答案.docx
- 重庆市铜梁一中2024-2025学年高二上学期第一次月考历史 Word版无答案.docx
- 四川省广安市第二中学2024-2025学年高二上学期第一次月考物理 Word版无答案.docx
- 湖南省邵东市第一中学2024-2025学年高三上学期第二次月考历史 Word版含解析.docx
- 湖南省长沙市长郡中学2023-2024学年高二上学期期中语文 Word版无答案.docx
文档评论(0)