求助
我用二级指针申请内存的时候,为啥会在函数中正常,然而在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];
#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函数中而不是自己定义的函数的话,就会直接报错
求助
@mao 道理我没懂,但貌似学到了新东西.jpg