我做了以下事情:
char * copyact(char * from)
{
return ++from;
}
int main()
{
char *string = "school";
char *copy;
copy = copyact(string);
printf("%s", copy);
}
这是打印chool
,但是我的想法是当我们尝试在 main() 中打印它时应用程序必须崩溃。根据作用域规则,参数 from 是 copyact 函数的局部变量。我正在做 from = from + 1; 并将地址返回到那个地方。那么当我们回到 main 时,现在分配给那个位置的内存不应该是无效的,因为所有的局部变量都必须被销毁吗?为什么这东西还能用?
澄清:我们不是为指针 &from 分配一个内存位置,它存储字符串的地址吗?当函数退出时,我们不是也销毁了持有有效地址的指针的地址吗?还是因为在执行 return 时,它指向的地址已经发送到 copy= ?