指针数组及动态内存分配
时间: 2023-11-03 09:01:59 浏览: 56
指针数组是由多个指针类型的元素组成的数组。每个元素都可以存储一个指向特定类型的指针。通过使用指针数组,我们可以轻松地管理多个指针对象。
动态内存分配是在程序运行时根据需要分配和释放内存空间。在C语言中,通常使用`malloc`和`free`函数来进行动态内存分配。`malloc`函数用于分配指定大小的内存块,并返回指向该内存块的指针。`free`函数用于释放先前分配的内存块。
相关问题
指针数组申请动态内存
指针数组申请动态内存的方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int size = 5; // 数组大小
int** arr = (int**)malloc(size * sizeof(int*)); // 申请指针数组的内存空间
// 为每个指针分配内存空间
for (int i = 0; i < size; i++) {
arr[i] = (int*)malloc(sizeof(int));
*(arr[i]) = i; // 指针数组中的每个元素赋值
}
// 打印指针数组中的元素
for (int i = 0; i < size; i++) {
printf("%d ", *(arr[i]));
}
printf("\n");
// 释放每个指针的内存空间
for (int i = 0; i < size; i++) {
free(arr[i]);
}
// 释放指针数组的内存空间
free(arr);
return 0;
}
```
上述代码演示了如何申请一个大小为5的指针数组,并为每个指针分配内存空间。然后,将每个指针数组元素赋值为对应的索引值,并打印出来。最后,释放每个指针的内存空间,再释放指针数组的内存空间。
cpp用指针创建数组 不用动态内存分配
在 C++ 中,除了使用动态内存分配的方式创建数组,也可以使用栈内存或者全局变量的方式创建数组。栈内存创建的数组会在函数执行完毕后自动释放,而全局变量创建的数组则在程序运行期间一直存在。下面是一些示例:
```c++
// 栈内存创建数组
int size = 5; // 数组大小
int arr[size]; // 在栈内存中创建 int 数组
// 给数组赋值
for (int i = 0; i < size; ++i) {
arr[i] = i + 1;
}
// 输出数组元素
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
// 全局变量创建数组
const int SIZE = 5; // 数组大小
int globalArr[SIZE]; // 在全局变量中创建 int 数组
// 给数组赋值
for (int i = 0; i < SIZE; ++i) {
globalArr[i] = i + 1;
}
// 输出数组元素
for (int i = 0; i < SIZE; ++i) {
std::cout << globalArr[i] << " ";
}
```
在上面的代码中,使用栈内存和全局变量的方式创建了两个大小为 `size` 和 `SIZE` 的 int 数组,并给数组赋值并输出数组元素。需要注意的是,使用栈内存创建的数组大小在编译期间就必须确定,不能使用变量作为数组大小;而使用全局变量创建的数组大小可以在运行期间确定,也可以使用变量作为数组大小。