C语言如何动态申请数组
时间: 2024-03-24 21:39:06 浏览: 18
在C语言中,可以使用动态内存分配函数malloc()来动态申请数组。malloc()函数可以按照指定的字节数分配一段连续的内存空间,并返回该内存空间的首地址。
动态申请数组的步骤如下:
1. 使用malloc()函数申请一段内存空间,例如:
```c
int* arr = (int*)malloc(n * sizeof(int));
```
这里的n表示数组的长度,sizeof(int)表示每个数组元素的字节数。
2. 使用申请到的内存空间初始化数组,例如:
```c
for (int i = 0; i < n; i++) {
arr[i] = i + 1;
}
```
3. 使用完数组后,记得使用free()函数释放申请的内存空间,例如:
```c
free(arr);
```
这样可以避免内存泄漏的问题。
相关问题
c语言动态申请数组空间
C语言中,动态申请数组空间可以使用malloc()函数来实现。malloc()函数的原型如下:
```
void* malloc(size_t size);
```
其中,size_t是一个unsigned int类型的整数,表示需要申请的空间大小。malloc()函数返回一个void*类型的指针,指向申请到的空间的首地址。如果申请空间失败,malloc()函数将返回NULL。
下面是一个动态申请数组空间的示例代码:
```
#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;
}
for (int i = 0; i < n; i++)
{
arr[i] = i + 1;
}
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
```
在上面的示例代码中,首先需要输入数组大小n,然后通过malloc()函数申请n个int类型大小的空间,将返回的指针强制转换为int*类型的指针arr。在申请空间后,需要判断返回的指针是否为NULL,如果为NULL则说明申请空间失败。接着,可以通过数组下标的方式访问动态申请的数组,将1~n的数存储到数组中,最后通过循环输出数组的所有元素。最后,需要注意的是,在程序结束前需要使用free()函数释放动态申请的空间,避免内存泄漏。
c语言动态申请二维数组
在C语言中,动态申请二维数组需要使用指针和malloc函数,具体步骤如下:
1. 声明一个指向指针的指针,用于存储动态申请的二维数组的首地址。
2. 使用malloc函数申请内存空间。由于二维数组是由多个一维数组组成的,所以需要分别申请每个一维数组的内存空间。
3. 对申请的内存空间进行初始化。
下面是示例代码:
```c
int main() {
int **p; // 声明一个指向指针的指针
int i, j, rows, cols;
printf("请输入二维数组的行数和列数:");
scanf("%d%d", &rows, &cols);
// 动态申请一维数组的内存空间
p = (int **)malloc(rows * sizeof(int *));
for (i = 0; i < rows; i++) {
p[i] = (int *)malloc(cols * sizeof(int));
}
// 对申请的内存空间进行初始化
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
p[i][j] = i * j;
}
}
// 输出二维数组的值
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d ", p[i][j]);
}
printf("\n");
}
// 释放申请的内存空间
for (i = 0; i < rows; i++) {
free(p[i]);
}
free(p);
return 0;
}
```
上面的代码中,首先声明了一个指向指针的指针p,用于存储动态申请的二维数组的首地址。然后通过输入行数和列数,使用malloc函数分别申请每个一维数组的内存空间,并对申请的内存空间进行初始化。最后输出二维数组的值,再释放申请的内存空间。