我不能将值分配给struct中的指针,如下所示
。
。
。
struct Matrix
{
char *A[10];
char *Psedo[10];
int depth;
int startrow;
int startcolumn;
int exitrow;
int exitcolumn;
};
struct Matrix matrixs ; // create new global struct
void createPsedoEmptyMatrixForBackTracking()
{
for (int i = 0; i < matrixs.depth; i++)
{
for (int x = 0; x < matrixs.depth; x++)
{
matrixs.Psedo[i][x] = '0';
}
}
printf("DONE");
}
void startMove()
{
createPsedoEmptyMatrixForBackTracking();
}
int main(){
startMove();
}
。
这不是完整的代码,但是我的matrixs.depth现在是5,并且作为我的编译器结果,printf(“ DONE”)从未显示,并且该值也没有分配给Psedo变量,我不知道为什么
然后我尝试
strcpy(matrixs.Psedo [i] [x],'0')
代替
matrixs.Psedo [i] [x] ='0';
。
。
这出现了
警告:传递'strcpy'的参数1会使指针从整数开始而不进行强制转换[-Wint-conversion]
还有printf(“ DONE);永远不会出现
最佳答案
您需要将内存分配给Psedo
变量。它是一个指针数组。他们指向哪里?他们没有指向任何有效的内存位置。访问它是undefined behavior。
如果您不需要指针数组,那么也可以简单地使用数组。这将不需要像当前情况那样进行显式分配。 char *Psedo[10];
将是char Psedo[10][MAXLEN]
;
其次,strcpy(matrixs.Psedo[i][x], '0')
将是strcpy(matrixs.Psedo[i], "0")
。馈给strcpy
它想要的东西...它期望指针。在较早的情况下,char
的整数值被视为指针。这就是警告的原因。这也将导致不确定的行为。
关于c - 无法将char值分配给struct中的指针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52902320/