int *arr 配合malloc的写法
时间: 2023-06-11 16:09:57 浏览: 52
int *arr;
arr = (int*) malloc(size * sizeof(int));
//其中,size为需要动态分配的数组大小,sizeof(int)为每个元素所占的字节数
if(arr == NULL) {
printf("动态内存分配失败");
exit(1);
}
//此时,arr指向的是动态分配的数组首地址,可以通过下标访问元素
for(int i = 0; i < size; i++) {
arr[i] = i; //赋值
}
//记得在使用完动态分配的数组后,要使用free释放内存
free(arr);
相关问题
int *arr = (int *) malloc(sizeof(int) * 3);*arr={1,2,3}写法有问题吗
该写法存在问题,应该改为下面的形式:
```
int *arr = (int *) malloc(sizeof(int) * 3);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
```
在使用 malloc 函数分配内存时,它返回的是一个指向分配的内存块的指针,该内存块中的内容是未初始化的。因此,在这种情况下,您需要显式地将数组元素的值赋给分配的内存块。这可以通过使用索引运算符来完成,而不是尝试使用指针解引用运算符来赋值整个数组。
int *arr = (int*) malloc(10 * sizeof(int));
这行代码的作用是动态分配一个可以存储 10 个整数的连续内存块,并将该内存块的起始地址赋值给指针变量 arr。其中,sizeof(int) 表示一个整数占用的字节数,乘以 10 表示需要分配的总字节数。由于 malloc() 函数返回的是一个 void* 类型的指针,因此需要将其强制转换为 int* 类型,以便于操作。
需要注意的是,动态分配的内存需要手动释放,以避免内存泄漏。可以使用 free() 函数来释放内存,例如:
```c
free(arr);
```
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)