1 Dynamic Array Allocation

1.使用malloc申请int长度空间,使用指针变量p接收
2.指针变量p保存在stack,它指向heap的一个指定的内存空间

3.可以为数组申请空间
1.1 Array allocation with calloc()
1.malloc通用的申请内存空间,可以为所有类型(普通类型,数组,结构体)
2.问题1:给数组申请内存时未初始化
3.问题2:20 * sizeof(int)不便于阅读
//allocate a 20 byte array
int * a = (int *) malloc(20 * sizeof(int));
int i;
for(i = 0; i < 20; i++){
printf("%d\n",i);
}
1.calloc将数组都初始化0
2.参数是两位,便于阅读
//allocate a 20 byte array
int * a = (int *) calloc(20, sizeof(int));
int i;
for(i = 0; i < 20; i++){
printf("%d\n",i); // 0 b/c calloc zeros out allocated memory
}
2 Data Representations
2.1 Pointers and Arrays are still the same!
1.数组直接,int *p = a;而普通变量则需要int *p = &a

2.指针值+1,是加了该指针类型的字节长度

本文探讨了动态数组分配的方法,包括使用malloc和calloc函数,对比了它们在内存分配及初始化方面的差异。同时,深入解析了指针与数组在内存中的表现形式,以及指针运算的原理。

1077

被折叠的 条评论
为什么被折叠?



