练习题3:指针数组的使用 编写一个C程序,实现以下功能: 1.声明一个整型数组 values ,包含5个整数。 2.初始化数组 values 为任意5个整数的序列。 3.声明一个整型指针数组 ptr_
时间: 2024-10-10 09:13:47 浏览: 55
题目要求编写一个C程序,用于操作指针数组。以下是详细的步骤和示例代码:
1. 首先,我们需要声明一个整型数组 `values`,并初始化它。由于需要5个整数,可以这样做:
```c
#include <stdio.h>
int main() {
// 步骤1: 声明整型数组
int values[5];
// 步骤2: 初始化数组
for (int i = 0; i < 5; i++) {
values[i] = i + 1; // 例如,设置为从1到5的数字
}
}
```
2. 接下来,声明一个整型指针数组 `ptr_`。在这个例子中,我们可以创建一个同样长度的指针数组,它们会指向 `values` 数组中的元素:
```c
// 步骤3: 声明整型指针数组
int *ptr_[5]; // 定义一个包含5个整型指针的动态数组
// 将指针分配给数组元素,指向values数组的元素
for (int i = 0; i < 5; i++) {
ptr_[i] = &values[i];
}
```
现在,`ptr_`数组包含了对`values`数组每个元素的地址。
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h> // 包含malloc和free函数
int main() {
// 步骤1: 声明整型数组
int values[5];
// 初始化数组
for (int i = 0; i < 5; i++) {
values[i] = i + 1;
}
// 步骤3: 声明整型指针数组
int **ptr_ = (int **)malloc(5 * sizeof(int*)); // 分配内存给指针数组
if (!ptr_) {
printf("Memory allocation failed.\n");
return 1;
}
// 分配内存给每个指针,并指向values数组的元素
for (int i = 0; i < 5; i++) {
ptr_[i] = (int*)malloc(sizeof(int));
if (!ptr_[i]) {
printf("Failed to allocate memory for pointer %d.\n", i);
free(ptr_);
return 1;
}
*ptr_[i] = values[i];
}
// 打印值和指针内容
for (int i = 0; i < 5; i++) {
printf("Element: %d, Pointer value: %d\n", values[i], *ptr_[i]);
}
// 释放内存
for (int i = 0; i < 5; i++) {
free(ptr_[i]);
}
free(ptr_);
return 0;
}
```
运行这个程序,你会看到数组的元素及其对应的指针值。
阅读全文