函数的参数中用二级指针

来源:互联网 发布:计算机考研学校知乎 编辑:程序博客网 时间:2024/05/01 22:09

在函数的参数中,有值传递和地址传递,

以一级指针方式传改不了str的值

void change(char* str1){     *str1 = "abcdef";}int main(){     char* str = "123456";          change(str);     printf("%s\n",str);     return 0;}
输出:123456

因为main中调用change函数时候是把str指针做了一次值传递(把str的地址传)给change函数中的str1。change函数拿到了str传递过来的副本,副本指向字符串常量"123456"。*str = "abcdef";程序把副本又指向了字符串常量"abcdef"。其中mian函数中str指向的没改变过。

以二级指针方式传可以改str的值

void change(char** str1){     *str1 = "abcdef";}int main(){     char* str = "123456";          change(&str);     printf("%s\n",str);     return 0;}
输出:abcdef

因为mian函数中取指向字符串常量的指针的地址,把它的地址赋给change函数,这是地址传递。change函数拿到了指向str的指针,就可以修改str所指向的内容,从而str的值改变了。


转载请标明,作者Aliwn-Liu






原创粉丝点击