我试图理解c代码(SimpleScalar,bpred.c),有件事让我很困惑:

    int *shiftregs;
    shiftregs = calloc(1, sizeof(int));

    int l1index, l2index;
    l1index = 0;
    l2index = shiftregs[l1index];

我删除了一些可能没有帮助的代码。调用后,calloc变成指针数组?*shiftregs的值是多少?谢谢!

最佳答案

因为shiftregs是指向int的指针,*shiftregsint的指针。
因为calloc保证它分配的内存被设置为0,并且您已经分配了足够的内存来引用shiftregs[0]l2index将是0(假设calloc没有失败并返回NULL)。

关于c - 指针calloc函数是否返回指针 vector ? (C语言),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20110548/

10-09 00:29