小编Sri*_*kar的帖子

以下代码片段产生相同的输出.但哪个是对的?

下面的代码片段是错误的.......但似乎工作正常

#include <stdio.h>

void fun(char* msg);

int main()
{
    char* str = "Hello";
    printf("%s\n",str);

    fun(&str);

    printf("%s\n",str);
    return 0;

}

void fun(char* msg){
    *msg = "World";

}
Run Code Online (Sandbox Code Playgroud)

现在正确的代码片段

#include <stdio.h>

void fun(char** msg);

int main()
{
    char* str = "Hello";
    printf("%s\n",str);

    fun(&str);

    printf("%s\n",str);
    return 0;

}

void fun(char** msg){
    *msg = "World";

}
Run Code Online (Sandbox Code Playgroud)

上面代码的目的是修改str的值. 这两个代码产生相同的输出,但为什么在这种情况下错误的代码似乎正常工作.

c pointers pass-by-reference

-1
推荐指数
1
解决办法
45
查看次数

标签 统计

c ×1

pass-by-reference ×1

pointers ×1