如何解决C ++在函数中分配动态2D数组
女孩之间的一切,首先,我想对菜鸟/重复的问题表示抱歉。
TL; DR我想为二维字符数组分配内存,但是只有在程序调用alloc()时我才能这样做。任何帮助表示赞赏。
既然你们喜欢代码,这就是我拥有的:
#include <iostream>
using namespace std;
#define LOG(x) cout<<endl<<x<<endl
void alloc(char ***add){
cout<<"Size: ";int s;cin>>s;
*add = new char *[s];
for (int i = 0; i < s; i++) {
*(add)[i] = new char[s];
cout<<add[i][i]<<" ; ";
}
}
int main() {
char **c;
alloc(&c);
for (int i =0;i<2;i++) {
for (int j = 0; j < 2; j++) {
cout<<c[i][j];
}
cout<<endl;
}
cin.get();
}
现在,每当我运行此代码时,都会出现以下错误:进程退出代码为139(信号11:SIGSEGV中断)。
此外,在调试器中,当调用函数并输入数组的大小时,会得到使用未声明的标识符'c'的错误。
谢谢你,我再次为菜鸟或重复的问题表示歉意,但是我确实尝试了从Text那里得到的答案,但是没有用。
解决方法
*(add)[i]
看起来不太正确,它为add变量建立索引并随后取消对指针的引用。这些括号无效。
尝试相反的顺序,即(*add)[i]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。