指针calloc函数是否返回指针向量?(C语言)

指针calloc函数是否返回指针向量?(C语言),c,pointers,calloc,C,Pointers,Calloc,我试图理解c代码(SimpleScalar,bpred.c),有一件事让我很困惑: int *shiftregs; shiftregs = calloc(1, sizeof(int)); int l1index, l2index; l1index = 0; l2index = shiftregs[l1index]; 我删除了一些可能没有帮助的代码。调用calloc后,*shiftregs变成指针数组?那么l2index的值是多少?非常感谢 由于移位符

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

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

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

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

由于
移位符
是指向
int
的指针,
*移位符
int

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

calloc()
函数用于分配一个动态的零整数数组,该数组可以通过指针
移位符来引用


除非分配失败(
calloc()
返回NULL),否则
l2index
中的值将为零。如果分配失败,则调用未定义的行为;任何事情都可能发生,但您的程序可能会崩溃。检查分配,使其不会崩溃

l2index
为0
calloc
将内存设置为零。以下是Linux程序员手册:

calloc()为大小为的nmemb元素数组分配内存 每个字节返回一个指向已分配内存的指针。记忆 设置为零。如果nmemb或size为0,则calloc()返回 NULL或以后可以成功删除的唯一指针值 传递给free()

检查calloc()是否返回NULL。 如果是这样,“l2index=shiftregs[l1index];”将崩溃,因为您试图从空点(shiftregs)获取值。
如果不是,正如他们所说,l2index将为0

“指针向量”是什么意思?抱歉,我是说指针数组
*shiftregs
是一个
int
shiftregs
是指向
int
的指针。
int*
可能指向
int
数组的第一个元素;shiftregs[#]是指位置中的内容?移位符是否成为int数组?否。您将
移位符
定义为一个指针,并且无论您为其分配了什么,它仍然是一个指针。建议阅读:本报告第6节。