//设计一个函数:void find1(char array[], char search, char *pa)
//要求:这个函数参数中的数组array是以0值为结束的字符串,
//要求在字符串array中查找字符是参数search里的字符。
//如果找到,函数通过第三个参数(pa)返回值为array字符串中第一个找到的字符的地址。
//如果没找到,则为pa为0。
隐含了
array = str;
search = a;
pa = p; /* 请注意:以上三句是调用时隐含的动作。*/
/*哦!参数pa与参数search的传递并没有什么不同,
都是值传递嘛(小语:地址传递其实就是地址值传递嘛)!
所以对形参变量pa值(当然值是一个地址值)的修改并不会改变实参变量p值,
因此p的值并没有改变(即p的指向并没有被改变)。*/
二、
隐含了
array = str;
search = a;
pa = &p; /* 请注意:以上三句是调用时隐含的动作。*/
ok 了
一句话,你是把地址传进去了吗
//要求:这个函数参数中的数组array是以0值为结束的字符串,
//要求在字符串array中查找字符是参数search里的字符。
//如果找到,函数通过第三个参数(pa)返回值为array字符串中第一个找到的字符的地址。
//如果没找到,则为pa为0。
一、
void find0(char array[], char search, char *pa);
void find0(char array[], char search, char *pa)
{
int i;
for (i = 0; *(array + i) != 0; i++)
{
if ( *(array+i) == search)
{
pa = array + i;
break;
}
else if (*(array+i) == 0)
{
pa = 0;
break;
}
}
}
void main()
{
char str[] = {"afsdfsdfdf\0"}; /* 待查找的字符串 */
char a = 'd'; /* 设置要查找的字符 */
char *p = 0; /* 如果查找到后指针p将指向字符串中查找到的第1个字符的地址。 */
find0(str, a, p); /* 调用函数以实现所要操作。 */
if (0 == p)
{
printf("没找到!\n"); /* 如果没找到则输出此句 */
}
else
{
printf("找到了,p = %d\r\n", p); /* 如果找到则输出此句 */
printf("找到了,p = %s", p); /* 如果找到则输出此句 */
}
}
隐含了
array = str;
search = a;
pa = p; /* 请注意:以上三句是调用时隐含的动作。*/
/*哦!参数pa与参数search的传递并没有什么不同,
都是值传递嘛(小语:地址传递其实就是地址值传递嘛)!
所以对形参变量pa值(当然值是一个地址值)的修改并不会改变实参变量p值,
因此p的值并没有改变(即p的指向并没有被改变)。*/
二、
void find1(char array[], char search, char **pa);
void find1(char array[], char search, char **pa)
{
int i;
for (i = 0; *(array + i) != 0; i++)
{
if ( *(array+i) == search)
{
*pa =array + i;
break;
}
else if (*(array+i) == 0)
{
pa = 0;
break;
}
}
}
void main()
{
char str[] = {"afsdfsdfdf\0"}; /* 待查找的字符串 */
char a = 'd'; /* 设置要查找的字符 */
char *p = 0; /* 如果查找到后指针p将指向字符串中查找到的第1个字符的地址。 */
find1(str, a, &p); /* 调用函数以实现所要操作。 */
if (0 == p)
{
printf("没找到!\n"); /* 如果没找到则输出此句 */
}
else
{
printf("找到了,p = %d\r\n", p); /* 如果找到则输出此句 */
printf("找到了,p = %s", p); /* 如果找到则输出此句 */
}
}
隐含了
array = str;
search = a;
pa = &p; /* 请注意:以上三句是调用时隐含的动作。*/
ok 了
一句话,你是把地址传进去了吗