int b[10];
int *a=(int*)calloc(10,sizeof(int));
b[8]=a[1];
定义的a是一个指向int类型的指针不错吧?
那么为什么第二行会合法?
C语言有关calloc函数的问题
关注:165 答案:3 手机版
解决时间 2021-01-10 21:00
- 提问者网友:女人不需要倾国倾城
- 2021-01-10 10:20
最佳答案
- 二级知识专家网友:白胡子大佬
- 2021-01-10 10:49
a 是 int*,所以 a[1] == *(a + 1) 是一个 int;
b[8] 自然是一个 int;
所以 a[1] 和 b[8] 都是 int 型的变量,b[8] = a[1] 是合法的。
b[8] 自然是一个 int;
所以 a[1] 和 b[8] 都是 int 型的变量,b[8] = a[1] 是合法的。
全部回答
- 1楼网友:归人
- 2021-01-10 12:58
calloc是定义10个长度为sizeof(int)的动态空间,相当于一个有10个元素的数组;自动初始化为每个元素为0;此时a就为数组名了,输出b[8]为0;;输出a的十个数均为0;
- 2楼网友:在時光深處躲貓貓
- 2021-01-10 11:51
calloc函数的功能与malloc函数的功能相似,都是从堆分配内存。
函数名: calloc
函数原型:void *calloc(int n,int size);
功 能: 函数返回值为void型指针。如果执行成功,函数从堆上获得size x n的字节空间,并返回该空间的首地址。如果执行失败,函数返回null。该函数与malloc函数的一个显著不同时是,calloc函数得到的内存空间是经过初始化的,其内容全为0。calloc函数适合为数组申请空间,可以将size设置为数组元素的空间长度,将n设置为数组的容量。
示例代码:
#include
#include
#define size 5
int main()
{
int * p=null;
int i=0;
//为p从堆上分配size个int型空间
p=(int *)calloc(size,sizeof(int));
if(null==p){
printf("error in calloc.\n");
return -1;
}
//为p指向的size个int型空间赋值
for(i=0;i
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!