
C语言函数调用指针并进行修改,但是主函数的指针地址未更改(strchr函数)
char * my_strchr(char const * str,int ch)
{
char *标志= NULL;
for(;(str=strchr(str,ch))!=NULL;str++)flag=str;
return flag;

}
int main()
{
char * str =“ hello”;
printf(“%x \ n”c strchr()函数的结果,my_strchr(str,'l'));

printf(“%x \ n”,my_strchr(str,'h'));
返回0;
}
输出: 40306b
403068

my_strchr()函数用于输出最后一次出现ch的地址.
但是! !!! My_strchr()函数在使用时未移动str的位置,指向地址“ l”,然后将str的位置移至“ l”,为什么第二个调用查找“ h”c strchr()函数的结果,仍可以使用它?
||最喜欢的||
3个答案
按喜欢排序
要更改主函数的指针地址,必须传递辅助指针或对主指针的引用.
传递一级指针只能修改指针指向的值,而不能修改指针本身.
在这里,仅main函数中的str和my_strchr参数指向相同的内存,但是两个str不是相同的指针.
因此,如果您在my_strchr上执行++,则不会影响主函数的str.
||
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-145197-1.html
没发现一个有用的观点或论据
这里有个小女孩很懂事
鄙视质监局