假设我有一些如下代码:
char *string;
void foo(char *s)
{
string = s;
}
foo("bar");
内部发生了什么?因为我没有明确声明我传递给 foo 的内容,例如通过做类似的事情。
char s[] = "bar";
foo(s);
“bar”会一直存储在同一个内存位置吗?是否会自动为其分配一些内存?如果是这样,这个地址是否保持不变,所以“string”总是指向一个包含“bar”的 char 数组?
我想我要问的更一般的问题是:当您将参数传递给函数而不首先将其显式分配给某个变量,然后传入该变量时,内部会发生什么。