相关疑难解决方法(0)

为什么在写入用"char*s"而不是"char s []"初始化的字符串时会出现分段错误?

以下代码在第2行接收seg错误:

char *str = "string";
str[0] = 'z';  // could be also written as *str = 'z'
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

虽然这非常有效:

char str[] = "string";
str[0] = 'z';
printf("%s\n", str);
Run Code Online (Sandbox Code Playgroud)

经过MSVC和GCC测试.

c c-strings segmentation-fault

277
推荐指数
10
解决办法
7万
查看次数

C++返回对局部变量的引用

如果必须返回i,以下代码(func1())是否正确?我记得在某处读到返回对局部变量的引用时存在问题.它与func2()有什么不同?

int& func1()
{
    int i;
    i = 1;
    return i;
}

int* func2()
{
    int* p;
    p = new int;
    *p = 1;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

c++

102
推荐指数
2
解决办法
10万
查看次数

在函数内声明const而不是变量有什么好处吗?

如果我有一个只存在很短时间的功能,那么使颜色列表保持不变会有所不同吗?

string getrandcolor(){
    const string colors[5] = {"red", "blue", "green", "yellow", "purple"};
    return colors[rand() % 5];
}
Run Code Online (Sandbox Code Playgroud)

注意:实际的颜色列表包含数百种颜色,而不仅仅是我展示的小样本,不确定这是否也有所不同.

c++ variables constants

7
推荐指数
2
解决办法
5505
查看次数

返回对局部静态变量的引用

刚刚开始学习 C++,遇到了这个示例,其中函数返回对局部静态变量的引用。

int& fun() {
    static int x = 10;
    return x;
}

int main() {
    int &z = fun();
    cout << fun() << " ";
    z = 30;
    cout << fun();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

该线有什么int &z = fun();作用?我们是否将一个引用存储在另一个引用中?我是这门语言的新手,我所知道的是引用变量就像别名一样引用变量。谁能解释一下这是如何工作的?

c++

5
推荐指数
1
解决办法
855
查看次数

标签 统计

c++ ×3

c ×1

c-strings ×1

constants ×1

segmentation-fault ×1

variables ×1