C++ 程序中的分段错误

问题描述 投票:0回答:1

输出 下面的代码是一个 C++ 程序,用于计算给定文本中的字母之和。

#include <iostream>
using namespace std;

int letter_sum(string text)
{
    int Psum = 0;
    int n;
    while (text[n] != '\0')
    {
        n++;
        Psum = Psum + text [n];
    }
    int Rsum = Psum - (96*n);
    return Rsum;
}

int main ()
{
    string text;
    cout << "type the text: ";
    cin >> text;
    int displayvalue =letter_sum(text);
    cout << displayvalue << endl;
}

根据输出,我期待一个数字(当然是给定文本中字母的总和),但我收到一条错误消息,显示分段错误。我是编码初学者。所以请用一些简单的术语解释,如果可能的话请告诉我如何做来解决这个问题。

c++ segmentation-fault
1个回答
0
投票

n 的值必须初始化,

int n = 0;

如果该值未初始化,它将有一个随机垃圾值,如“16553072”。这就是为什么当访问文本[16553072]的索引值时,它超出了分配的内存并抛出分段错误。

请参阅此处了解有关分段错误的更多信息

© www.soinside.com 2019 - 2024. All rights reserved.