C 使用指针对指针生成整数的动态矩阵
我试图创建一个基于整数指针的动态矩阵,这个变量是动态分配的,但是我在使用它时遇到了一些问题,我不知道我是否使用了错误的东西,但是结果并不像预期的那样。是我做错了什么,还是我没有仔细考虑C 使用指针对指针生成整数的动态矩阵,c,arrays,pointers,pointer-to-pointer,C,Arrays,Pointers,Pointer To Pointer,我试图创建一个基于整数指针的动态矩阵,这个变量是动态分配的,但是我在使用它时遇到了一些问题,我不知道我是否使用了错误的东西,但是结果并不像预期的那样。是我做错了什么,还是我没有仔细考虑 void pkn(int n, int k) { int chec = checagemInicial(n,k); if(chec == 1) { return; } int mat[n]; int **resultado = NULL, **newMem;
void pkn(int n, int k)
{
int chec = checagemInicial(n,k);
if(chec == 1)
{
return;
}
int mat[n];
int **resultado = NULL, **newMem;
int posicoes = 0;
initiateArray(mat, n);//initialize the matrix with one's
while(functionthatchecksthings1(mat, n, k) == 0)//this 2 function works no need to worry
{
if(functionthatchecksthings2(mat, n , k))
{//i think the problem might be or here
newMem = realloc(resultado, ((sizeof(int)*n)+(posicoes*sizeof(int)*n)));
if(newMem)
{//or here
resultado = newMem;
}
int i = 0;
for(i; i<n;i++)
{//or here but don't know where
resultado[posicoes][i] = mat[i];
}
posicoes++;
}
somaArray(mat, k, n-1);
}
//or in the very least case i'm printing it wrong
printaArray(resultado, n, posicoes);
system("pause");
free_matrix(posicoes, resultado);
}
void pkn(int n,int k)
{
int chec=checagemInicial(n,k);
如果(chec==1)
{
返回;
}
int mat[n];
int**resultado=NULL,**newMem;
int posicoes=0;
initiateArray(mat,n);//用自己的
while(functionthatchesthings1(mat,n,k)==0)//这2个函数可以工作,无需担心
{
if(检查铰链2(垫、n、k)的功能)
{//我想问题可能在这里
newMem=realloc(resultado,((sizeof(int)*n)+(posicos*sizeof(int)*n));
if(newMem)
{//还是在这里
resultado=newMem;
}
int i=0;
对于(i;iWhy you's use realloc on this line?newMem=realloc(resultado,((sizeof(int)*n)+(posicos*sizeof(int)*n)))在这一行之前,你甚至没有分配resultado
。如果我没有弄错的话,realloc会分配内存空间,就像malloc一样,如果之前没有分配第一个参数,这是正确的,@Troianos77,但是要使realloc
以这种方式运行,指针必须是空的。你从不初始化resultado
>当变量(和参数)有意义时,to NULL.in极大地帮助代码的清晰度/可读性和可理解性使用了名称。就它而言,我第一次通读了代码,仍然不知道“n”、“k”、“p”的含义/用法,并且仍然对参数“ar”有点怀疑。“resultado”的总体处理方式不正确。它应该是:resulttadp=malloc(xsizeof(int));如果resultado为NULL,则处理错误,否则退出,例如(inti=0;iWhy您在这行上使用realloc?newMem=realloc(resultado,((sizeof(int)*n)+(posicoes*sizeof(int)*n)))在这一行之前,你甚至没有分配resultado
。如果我没有弄错的话,realloc会分配内存空间,就像malloc一样,如果之前没有分配第一个参数,这是正确的,@Troianos77,但是要使realloc
以这种方式运行,指针必须是空的。你从不初始化resultado
>当变量(和参数)有意义时,to NULL.in极大地帮助代码的清晰度/可读性和可理解性使用了名称。就它而言,我第一次通读了代码,仍然不知道“n”、“k”、“p”的含义/用法,并且仍然对参数“ar”有点怀疑。“resultado”的总体处理方式不正确。它应该是:resulttadp=malloc(xsizeof(int));如果resultado为NULL,则处理错误,否则退出,例如(int i=0;i
void printaArray(int **ar, int n, int p)
{
int i = 0, j;
for(i; i < p; i++)
{
j = 0;
for(j; j < n; j++)
{
printf("%d ",(ar[i][j]));
}
printf("\n");
}
printf("%d\n", p);
}