gpt4 book ai didi

c++ - 从 ‘char*’ 到 ‘char’ [-fpermissive] 的无效转换和数组下标的无效类型 ‘char[int]’

转载 作者:行者123 更新时间:2023-11-28 06:42:48 25 4
gpt4 key购买 nike

int main() {
int casee;
int m, n;
int k;
char* a;
char ch;

cin >> casee;
cin >> m;
cin >> n;
a = new char[m];
for (int i = 0; i < m; i++) {
a[i] = new char[n]; // # 20
}

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> ch;
a[i][j] = ch; // # 28
}
}

cout << a[2][3] << endl; // # 32

return 0;
}

在第 28、30、32 行,我有这样的错误..

proj1.cpp: In function ‘int main()’:
proj1.cpp:20:18: error: invalid conversion from ‘char*’ to ‘char’ [-fpermissive]
proj1.cpp:28:10: error: invalid types ‘char[int]’ for array subscript
proj1.cpp:32:15: error: invalid types ‘char[int]’ for array subscript

我想使用动态分配方法分配一个多维数组。不过听说不能动态分配。因此,我使用 for 循环进行分配。但是,它没有用。

如果你这样回答(↓),我可能不明白为什么“[wprime]”前面有指针,请另外回答指针存在的原因。

grid = new int* [wprime];
for (int i = 0; i < wprime; i++)
grid[i] = new int[hprime];

我该如何解决这个问题..请帮帮我 b.b

最佳答案

解决您的类型问题...

正如 wRAR 所说,看来问题出在 char* a; 需要是 char** a;char* 是一种指针类型,它引用要解释为 char 值的内存块,例如在字符串中。您在这里似乎需要的是一个 char**,它是一种指针类型,它引用要解释为单个 char* 值的内存块,例如字符串数组。

另一个问题是你需要初始化 char** a; 以实际存在,因为目前它不会指向任何特定的东西。因此,您很可能会遇到导致应用程序崩溃的访问冲突。要初始化,请执行类似 char** a = new char* [m]; 的操作。

关于c++ - 从 ‘char*’ 到 ‘char’ [-fpermissive] 的无效转换和数组下标的无效类型 ‘char[int]’,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25622466/

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