gpt4 book ai didi

calloc()、指针和所有位为零

转载 作者:太空狗 更新时间:2023-10-29 17:00:42 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
Is NULL always zero in C?

C 标准为 calloc() 规定了以下内容:

The calloc function allocates space for an array of nmemb objects, each of whose size is size. The space is initialized to all bits zero.

关于所有位为零的警告如下:

Note that this need not be the same as the representation of floating-point zero or a null pointer constant.

测试程序:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{
char** list = calloc(10, sizeof(*list));
int i;
for (i = 0; i < 10; i++)
{
printf("%p is-null=%d\n", list[i], NULL == list[i]);
}
free(list);

return 0;
}

我使用以下编译器构建并执行了这个程序:

  • VC7、VC8、VC9、VC10
  • gcc v4.1.2,gcc v4.3.4
  • Forte 5.8,Forte 5.10

在所有情况下,所有位都为零是一个NULL指针(除非我在测试程序中犯了错误)。

C 标准不保证NULL 指针所有位为零 的原因是什么?出于好奇,是否有任何编译器的所有位都为零 不是NULL 指针?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com