指针数组和指针二维数组是什么,给一些详细明懂的案例
时间: 2024-10-01 13:08:27 浏览: 28
第3讲 指针高级指针访问数组.doc
指针数组和指针二维数组都是在内存中存储和操作数据的方式,特别是对于动态分配的内存。
**一、指针数组:**
指针数组是一维数组,其中每个元素是一个指向其他变量的指针。例如,在C语言中,我们可以创建一个整数指针数组,存放对一组整数的引用:
```c
int *ptrs[5]; // 创建一个包含5个元素的指针数组
// 分配内存并初始化指针
for (int i = 0; i < 5; i++) {
ptrs[i] = malloc(sizeof(int)); // 每个指针指向一个新分配的空间
*ptrs[i] = i; // 设置指针指向的值
}
// 访问数组元素
for (int i = 0; i < 5; i++) {
printf("Element %d is stored at address: %p\n", *ptrs[i], ptrs[i]); // 输出地址和值
}
// 释放内存
for (int i = 0; i < 5; i++) {
free(ptrs[i]);
}
```
**二、指针二维数组:**
指针二维数组则是由一维数组组成的数组,每个一维数组又存储了指向另一个一维数组的指针。这主要用于表示表格或矩阵数据,比如游戏中的地图:
```c
int (*matrix)[3]; // 创建一个指向3x3整数矩阵的指针
// 分配内存并初始化
matrix = (int (*)[3])malloc(sizeof(int[3]) * 4); // 分配4行3列的矩阵空间
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
matrix[i][j] = i + j; // 简单示例:每一项等于行*列
}
}
// 访问和修改矩阵元素
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
// 释放内存
free(matrix);
```
阅读全文