我不能将值分配给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/

10-11 21:28