所以我最近一直在玩C,并且一直试图理解通过值/引用传递的复杂性以及在函数内操作传入变量的能力.然而,我遇到了以下问题:
void modifyCharArray(char *input)
{
//change input[0] to 'D'
input[0] = 'D';
}
int main()
{
char *test = "Bad";
modifyCharArray(test);
printf("Bad --> %s\n", test);
}
Run Code Online (Sandbox Code Playgroud)
所以想法只是修改函数内的char数组,然后在修改完成后打印出所有数组.但是,这会失败,因为我所做的只是修改input传入的值,而不是实际的内存地址.
简而言之,有没有什么方法可以让我char *input进入一个函数并修改它的原始内存地址而不使用像memcpystring.h 这样的东西?
R S*_*ahu 11
简而言之,有没有什么方法可以让我
char *input进入一个函数并修改它的原始内存地址而不使用像memcpystring.h 这样的东西?
是的你可以.你的功能modifyCharArray正在做正确的事情.你所看到的是由那个事实引起的
char *test = "Bad";
Run Code Online (Sandbox Code Playgroud)
"Bad"在程序的只读存储器中创建并test指向该存储器.更改它是导致未定义的行为.
如果要创建可修改的字符串,请使用:
char test[] = "Bad";
Run Code Online (Sandbox Code Playgroud)