当然也可以用第二种方法,用指针的指针作传递参数
C++学习
先回复10楼,你用了strcpy返回了指针p的新地址。我也清楚函数指针可以带回一级指针的地址,
比如我如下修改func1()同样可以达到fun1带回新指针的目的。这和你的代码意思是一样的。
char *func1(char *p)
{
*p = "4567";
return p;
}
int main()
{
char *ptr = "1234";
printf("%s\n",func1(ptr);
return 0;
}
但我这里想问的不是通过函数返回值的方式获得地址。
当入参(char *p;)是一级指针时,函数语句(*p = "4567";)为何不能带回指针。而二级指针却可以带回来。既然二级指针可以带回来,那么这个地址的内存空间怎样被创建的,内容如何被保存的。
func1()中的形参是一个局部变量,函数结束后,p的内存被释放.
在第一个函数中,只是改变p的值,并没有改变ptr的值,而在第二个函数中,改变的是ptr的值.