1 回答
TA贡献1813条经验 获得超2个赞
原来的程序不能运行吧?
这是因为
char* cNames[]= /*定义字符串数组 数组指针*/
{
"Aaron", /*为字符串进行赋值*/
"Jim",
"Charles",
"Sam",
"Ken",
"end" /*设定结束标志*/
};
中的cNames[5](即指向"end"的指针)与if(*cNameArray=="end")中右边的指向字符串常量"end"(这是另一个常量,与前面的那个只是串值相同而已,却不是同一个常量)的指针是两个不同值的指针,所以它们永远都不可能相等。所以程序会陷入无限的递归。
以下是改好的程序:
#include<stdio.h>
#include<string.h> /*增加了此行*/
void DisplayNames(char** cNameArray); /*声明函数 二级指针*/
char* cNames[]= /*定义字符串数组 数组指针*/
{
"Aaron", /*为字符串进行赋值*/
"Jim",
"Charles",
"Sam",
"Ken",
"end" /*设定结束标志*/
};
int main()
{
DisplayNames(cNames); /*调用递归函数*/
return 0;
}
void DisplayNames(char** cNameArray)
{
if(strcmp(*cNameArray,"end")==0) /*判断结束标志 ==== 修改了此行*/
{
return ; /*函数结束返回*/
}
else
{
DisplayNames(cNameArray+1); /*调用递归函数*/
printf("%s\n",*cNameArray); /*输出字符串*/
}
}
添加回答
举报