我是新来的,只是尝试它的一些功能。我遇到了calloc()
功能。我想知道为什么整个变量打印,是不是每个索引相同。变量值不应该是0
?
#include "stdio.h"
#include "stdlib.h"
int main()
{
int *array;
array = calloc(100,sizeof(int));
printf("%d\n",array);
for(int i = 0 ; i<sizeof(array);i++)
{
printf("%d\n", array[i]);
}
free(array);
}
字符串
并且输出是
-1300734400
0
0
0
0
0
0
0
0
型
我期望printf("%d\n",array);
中打印的值为零
2条答案
按热度按时间ss2ws0br1#
printf("%d\n",array);
这是错误的,你正在打印数组的地址,而不是内容。如果你想实际打印地址,你应该使用%p
,并将指针转换为(void*)
。i<sizeof(array)
这是错误的。sizeof
以字节为单位给出大小,但是array[i]
假设int
的项目数为i
,而不是一个字节。要获得数组的项目数,必须执行sizeof(array)/sizeof(*array)
。sizeof
,否则你会得到指针的大小!通常是2到8字节,具体取决于系统。#include "stdio.h"
当包含标准库头文件时,应该使用<stdio.h>
。" "
语法用于用户定义的头文件。s3fp2yjn2#
当你这样做时:
字符串
由于
array
的类型为int *
,因此您试图打印指针的值,而不是它所指向的值。此外,%d
说明符用于打印int
值,而不是int *
值。您应该使用%p
来打印指针。