Follow

求助 

我用二级指针申请内存的时候,为啥会在函数中正常,然而在main中无法运行啊?

for(i = 0;i<g;i++){
n[i] = new int[g];
}

用的就是上面这个方式申请的(n是直接通过int **来声明的,g是一个int型的数)

· · Web · 2 · 0 · 1

求助 

@mao 道理我没懂,但貌似学到了新东西.jpg

@mao 我建议你把两种完整的代码发过来,可能是其他原因。
我也不清楚new int[10],出来的是什么类型,一般是用int *来接,T[]向T*有个隐式转换,一般用指针来指向数组会脱去一层,我的意思也就是:T (*line)[N] = new T[M][N];

@literalkernel 好的

<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函数中而不是自己定义的函数的话,就会直接报错

Sign in to participate in the conversation
小森林

每个人都有属于自己的一片森林,也许我们从来不曾走过,但它一直在那里,总会在那里。迷失的人迷失了,相逢的人会再相逢。愿这里,成为属于你的小森林。