c++ 我的代码没有运行,因为突然发生核心转储(分段错误)[重复]

svmlkihl  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(80)
    • 此问题在此处已有答案**:

How do I determine the size of my array in C?(24个答案)
3天前关闭.

#include <iostream>
 #include <string>
#include <vector>

using namespace std;

void converter(vector<char>keypad[],int num[], int index, string result, int size_of_num){
   if(index == size_of_num){
    cout << result << " ";
   return;
   }

  int digit = num[index];
  int size_of_keypad = keypad[digit].size();

  for(int i=0; i < size_of_keypad; i++){
    converter(keypad, num, index + 1, result + keypad[digit][i], size_of_num);
  }
  
}

int main(){
    vector <char> keypad[] = {
    {},{},{'a','b','c'},
        {'d','e','f'},
        {'g','h','i'},
        {'j','k','l'},
        {'m','n','o'},
        {'p','q','r','s'},
        {'t','u','v'},
        {'w','x','y','z'}};

    int numbers[] = {2,3,4};

    int size_of_num = sizeof(numbers);
    
    converter(keypad, numbers, 0, string (""), size_of_num );

    return 0;
}

我试着运行这段代码,这是把电话号码转换成文字。我在这个问题上使用了向量和一个递归函数。但我不确定这是内存溢出还是完全其他的东西。
我试着在网上搜索来解决这个问题,我找到了正确的代码,但是他们做的每件事都是一样的,唯一不同的是变量名,我就是不知道出了什么问题。

kzipqqlq

kzipqqlq1#

你算错尺寸了

int size_of_num = sizeof(numbers);

应该是

int size_of_num = sizeof(numbers)/ sizeof(numbers[0])

甚至

int size_of_num = std::size(numbers);

相关问题