再写一个不用calloc函数的
时间: 2023-12-14 17:36:27 浏览: 31
下面是一个不使用calloc函数的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n = 5;
int *arr = malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed.\n");
return 1;
}
for (int i = 0; i < n; i++) {
arr[i] = 2 * i;
printf("%d ", arr[i]);
}
free(arr);
return 0;
}
```
这个例子使用malloc函数手动分配了n个整数的内存空间,并在循环中对这些整数进行了初始化和打印。最后,使用free函数释放了内存空间。
相关问题
calloc函数
`calloc()` 是一个标准库函数,用于动态内存分配。与 `malloc()` 不同,`calloc()` 分配的内存会被初始化为 0。它的原型如下:
```c
void* calloc(size_t num, size_t size);
```
其中,`num` 表示需要分配的元素个数,`size` 表示每个元素的大小。函数返回一个指向分配内存的指针,如果分配失败则返回 `NULL`。
`calloc()` 可以用于分配数组和结构体等类型的内存,例如:
```c
int* arr = (int*) calloc(10, sizeof(int)); // 分配 10 个 int 类型的元素,都初始化为 0
struct Employee* emp = (struct Employee*) calloc(1, sizeof(struct Employee)); // 分配 1 个 Employee 结构体,所有成员变量都初始化为 0
```
需要注意的是,`calloc()` 分配的内存需要使用 `free()` 函数释放,否则会导致内存泄漏。例如:
```c
free(arr);
free(emp);
```
利用malloc函数或calloc函数建立一个动态整形数组
可以使用malloc函数或calloc函数来建立一个动态整形数组。下面是一个使用malloc函数的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
printf("请输入数组长度:");
scanf("%d", &n);
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("内存分配失败!\n");
return -1;
}
printf("请输入数组元素:");
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
printf("数组元素为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
free(arr);
arr = NULL;
return 0;
}
```
上述代码首先通过scanf函数获取用户输入的数组长度n,然后通过malloc函数分配n个整形变量的内存空间,并将其赋值给指针变量arr。如果内存分配失败,则输出错误信息并返回-1。接着通过for循环遍历数组,获取用户输入的每个元素,并将其存入数组中。最后再通过for循环输出数组中的每个元素。最后一定要使用free函数释放arr指针指向的内存空间,并将arr置为NULL,以防止出现野指针。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)