1、动态分配函数malloc
void * malloc(size_t size);
该函数接收一个参数 size
,表示要分配的字节大小。返回值为指向新分配内存起始位置的指针。如果无法成功分配所需的内存,则返回NULL。
2、头文件
#include <stdlib.h>
3、示例代码
#include <stdio.h>
#include <stdlib.h>
int main() {
int n; // 定义变量n来保存输入的元素个数
printf("请输入要创建的数组长度:");
scanf("%d", &n);
int* arr = (int*)malloc(sizeof(int) * n); // 根据输入的元素个数动态分配内存
if (arr == NULL) {
printf("内存分配失败!\n");
return -1;
}
for (int i = 0; i < n; ++i) {
arr[i] = i + 1; // 初始化数组元素
}
printf("已经成功创建了一个包含 %d 个元素的数组:\n", n);
for (int j = 0; j < n; ++j) {
printf("%d ", arr[j]);
}
free(arr); // 释放之前通过malloc()函数分配的内存
return 0;
}
4、定义行数都未知的二维数组
理解:二维数组本质上是下一行接着上一行继续向下存储的一维数组
列数已知,则先把一维数组构建好
行数未知,则用指针把上面的一维数组一个一个的连接起来
此时可以构建出不连续的二维数组(存储空间不连续)