一个函数越界的问题
写了一道练习程序,大体思路是按照《C和指针》程序的6.2写的。如果find_char(q,'a')函数传入的是已有的数值,比如本例,则程序能够正常执行,否则不能,比如find_char(q,'w')。该程序编译能够通过,我找了半天也不知道哪里出错了。后来一步一步的跟踪,说是
while((string=*strings++)!=NULL)
#include <stdio.h>#include <stdlib.h>#define TRUE 1#define FALSE 0int str_len(char* string);int find_char(char** strings,char value);/* * */int main(int argc, char** argv) { char* s1="a"; char* q[1]={"a"}; int flag=find_char(q,'w'); printf("value %s found\n",(flag ? "was" : "was not")); return (EXIT_SUCCESS);}int str_len(char* string){ int length=0; while(*string++!='\0') { ++length; } return length;}int find_char(char** strings,char value){ char* string; while((string=*strings++)!=NULL) { while(*string!='\0') { if(*string++==value) { return TRUE; } } } return FALSE;}