C 和指针 程序 6.3 在一组字符串中查找: 版本 2
#include <stdio.h>#include <assert.h>
#define TRUE 1
#define FALSE 0
int
find_char(char **strings, int value)
{
assert(strings != NULL);
while (*strings != NULL) {
while (**strings != '\0') {
if (*(*strings)++ == value)
return TRUE;
}
strings++;
}
return FALSE;
}
书上说由于存在副作用,这个程序将破坏这个指针数组,它只适用于字符串只需要查找一次的情况。
我也运行过这个程序了,的确是会破坏,但没有想通理由。
指向当前字符串字符的指针值增加1后,第二次再应用这个查找程序时为何指向字符的指针不会重新指向字符串第一个字符,而strings却会重新指向第一个指针。