gpt4 book ai didi

c++ - 传递动态分配的二维字符数组会导致段错误?

转载 作者:行者123 更新时间:2023-11-30 03:16:01 26 4
gpt4 key购买 nike

我在使用函数时遇到问题。

我有两个功能。

createTwoDArray:提示用户输入行和列的大小,创建一个新的二维数组并返回它,同时修改传递给它的行和列变量。

printTwoDArray:应该接受一个二维数组并打印所有内容。但是,调用此函数时,会立即发生段错误。函数内的一行代码都没有被调用。

谢谢你:)

int column, row;
char** createTwoDArray(int& column, int& row) {
int min, max, i, j;
cout << "\nPlease enter row size:";
cin >> i;
row = i;
cout << "\nPlease enter column size:";
cin >> j;
column = j;
char** dynamicArray2 = new char*[column];
for(i = 0; i < row; i++) {
dynamicArray2[i] = new char[column];
for(j = 0; j < column; j++) {
dynamicArray2[i][j] = '\0';
}
}
return dynamicArray2;
}
void printTwoDArray(char** array, int row, int column) {
//
}

//
char** array2 = new createTwoDArray(column, row)
printTwoDArray(array2, column, row); //this causes the segmentation error
//

最佳答案

有两个错误:'column'用于分配行,并且在调用 printTwoDArray() 时混淆了行和列。

这是固定代码。它在 Visual C++ 中运行良好。

#include "pch.h"
#include <iostream>

int column, row;
char** createTwoDArray(int& column, int& row) {
int min, max, i, j;
std::cout << "\nPlease enter row size:";
std::cin >> i;
row = i;
std::cout << "\nPlease enter column size:";
std::cin >> j;
column = j;

// *** Use row, not column to allocate the number of rows.
char** dynamicArray2 = new char*[row];
for (i = 0; i < row; i++) {
dynamicArray2[i] = new char[column];
for (j = 0; j < column; j++) {
dynamicArray2[i][j] = '\0';
}
}
return dynamicArray2;
}

void printTwoDArray(char** array, int row, int column) {
printf("\nPrinting %d rows:\n\n", row);

for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
printf(" %2d", array[i][j]);
}

printf("\n");
}
}

int main()
{
//
char** array2 = createTwoDArray(column, row);

// Pass row and column in the right order!
printTwoDArray(array2, row, column);
//

return 0;
}

关于c++ - 传递动态分配的二维字符数组会导致段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56623799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com