求助 Show more
我用二级指针申请内存的时候,为啥会在函数中正常,然而在main中无法运行啊?
for(i = 0;i<g;i++){ n[i] = new int[g]; }
用的就是上面这个方式申请的(n是直接通过int **来声明的,g是一个int型的数)
@mao 我建议你把两种完整的代码发过来,可能是其他原因。我也不清楚new int[10],出来的是什么类型,一般是用int *来接,T[]向T*有个隐式转换,一般用指针来指向数组会脱去一层,我的意思也就是:T (*line)[N] = new T[M][N];
@literalkernel 好的
#include <iostream>
using namespace std;
int V(int **n){ int i, j;
for (i = 0; i < 10; i++) { n[i] = new int[10]; } for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { n[i][j] = i + j; } } return 1;}
int main(){ int **n; int **f; int i, j; cout << V(n) << endl;
for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { cout << n[i][j] << "\t"; } cout << endl; }}
这样操作是没问题的,但如果把new的那一块放在main函数中而不是自己定义的函数的话,就会直接报错
每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。
@literalkernel 好的
#include <iostream>
using namespace std;
int V(int **n)
{
int i, j;
for (i = 0; i < 10; i++)
{
n[i] = new int[10];
}
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
n[i][j] = i + j;
}
}
return 1;
}
int main()
{
int **n;
int **f;
int i, j;
cout << V(n) << endl;
for (i = 0; i < 10; i++)
{
for (j = 0; j < 10; j++)
{
cout << n[i][j] << "\t";
}
cout << endl;
}
}
这样操作是没问题的,但如果把new的那一块放在main函数中而不是自己定义的函数的话,就会直接报错