Sri*_*kar -1 c pointers pass-by-reference
下面的代码片段是错误的.......但似乎工作正常
#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的值. 这两个代码产生相同的输出,但为什么在这种情况下错误的代码似乎正常工作.
第一个不应该编译,因为&str是a char**,但函数声明为a char*.
另外,在*msg = "World";,"World"是一个char*但是*msg是单一的char.
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |