【发布时间】:2018-01-05 20:49:59
【问题描述】:
编辑: 是的,我知道我已经有了一个 3x100 数组,而无需执行所有这些操作。但问题是我不知道数组的大小,它会根据情况而变化。这就是我想让它动态化的原因。
编译时收到此警告:
c1.c:24:12: 警告:来自不兼容指针类型的赋值 >[-Wincompatible-pointer-types] copyTab = tabClef;
显然 copieTab 与 tabClef 不兼容,因此无法为其赋值。
我创建了一个具有 3 行和 100 列的动态二维数组。这是我的代码:
void allocation(size_t longClef, int copieTab[3][100]) {
int i=0;
int ** tabClef = NULL;
tabClef = malloc(longClef * sizeof(char));
if (tabClef == NULL) //Si l'allocation a echoue
{
printf("Allocation a echoue\n");
return; // On arrete immediatement le programme
}
// On peut continuer le programme normalement sinon
// Creer matrice
for (i=0; i<longClef; i++) {
tabClef[i] = malloc(100 * sizeof(char));
}
/* Copie du tableau dans un pointeur pour le sortir de la fonction */
copieTab = tabClef;
}
【问题讨论】:
-
您不能将分配的指针列表分配给二维数组。为什么不直接写
copieTab? -
请注意,您的指针/数组元素类型是
int,并且您为两者分配了错误的大小。应该分别是sizeof(int *)和sizeof(int)。