C和指针 第六章 指针6.2 6.3字符串中查找的两个版本
2016-08-14 23:42
239 查看
int find_char(char **strings, char ch) { char *string; while ((string = *strings++) != NULL) { while (*string != '\0') { if (*string++ == ch) { return TRUE; } } } return FALSE; }
无副作用版本,适合多次查找。
int find_char(char **string, char ch) { while (*string != NULL) { while (**string != '\0') { //*string所指向的值被加一 if (*(*string)++ == ch) { return TRUE; } } string++; } return FALSE; }
有副作用版本,*(*string)++会改变*string处的的值,不适合多次查找。第一次查找后会破坏指针数组。
如图所示,第二次执行find_char函数时,因为第一次函数运行时,执行了两次*(*string)++找到了字符‘a’,所以*(*string)++,*string对于list[0],自增使list[0]增加两次,list[0]处存放的是指针,所以list[0]向右偏移了两位。从“yangxunwu”,变成“ngxunwu”.
相关文章推荐
- c++指针学习笔记--交换两个字符串数据
- 查找两个字符串的最长公共子串的Javascript函数
- 两个字符串复制(指针)
- (程序员面试题)字符串处理之查找两个字符串的最大公共子字符串
- 功能:查找两个字符串有没有相同的部分
- 查找两个字符串的最长公共子串(附源码)_AX
- 用指针玩字符串(7)——比较两个字符串strcmp()
- 17周---项目 2-用指针玩字符串---比较两个字符串
- [算法 笔记] 查找二叉树上任意两个结点的最近共同祖先(更新版本)
- 查找两个字符串的最小字串。(原创,闲着无事,检验下自己的水平,请大家给予评论)
- 指针定义两个字符串,用strcpy交换问题?
- C和指针 第六章 6.3 reverse_str(char *str)
- 两个字符串相加用指针实现
- 一本介绍C指针的书--字符串和字符串数组6.3
- c++指针学习笔记--交换两个字符串数据收藏
- 代码分享,寻找两个字符串的相似度。 ios版本
- 查找两个字符串的最大相同子串
- Java语言实现查找两个字符串的最大公共字串
- 在二叉树中查找两个节点的最近的公共祖先节点(有回溯指针)(NCA--nearest common ancestor)
- 查找两个字符传中最大的相同字符串