wrg*_*wfg 3 c++ arrays pointers
我了解到,当我初始化一个字符数组时,就像初始化一个指向字符的指针一样.但是,如果是这种情况,为什么以下代码输出奇怪的字符?
char* returnMe()
{
char text[] = "Will I live forever?";
return text;
}
Run Code Online (Sandbox Code Playgroud)
而以下代码:
char* returnMe()
{
char* text = "Will I live forever?";
return text;
}
Run Code Online (Sandbox Code Playgroud)
输出:
我会永远活着吗?
这两个初始化之间到底有什么区别?它们都像指针一样,所以如果我这样做:
puts(X); //puts get char* as a parameter in it.
Run Code Online (Sandbox Code Playgroud)
它适用于两种情况(当我还没有超出范围时.)
小智 10
包含这个的函数:
char text[] = "Will I live forever?";
Run Code Online (Sandbox Code Playgroud)
返回一个指向名为局部变量text,它包含字符串"我要生活下去吗?".与所有局部变量一样,该函数在函数返回后会蒸发,因此如果您尝试访问它,则会在未定义的行为域中关闭.
包含这个的函数:
char* text = "Will I live forever?";
Run Code Online (Sandbox Code Playgroud)
返回指向内存中某个魔术位置的指针(但不是局部变量),该指针包含该字符串,该字符串会持续执行程序,因此使用该指针不是未定义的行为.
| 归档时间: |
|
| 查看次数: |
80 次 |
| 最近记录: |