c 语言用函数指针遍历数组
时间: 2024-10-13 13:16:17 浏览: 17
在C语言中,函数指针可以用于遍历数组,特别是当处理指向函数的指针数组时。例如,假设有一个函数指针类型的数组,每个元素对应一个执行特定操作的函数:
```c
typedef void (*func_ptr)(int); // 定义函数指针类型
// 定义一些函数并将其地址存储到数组中
void print(int x) {
printf("%d\n", x);
}
void increment(int x) {
x++;
printf("%d\n", x);
}
func_ptr array[] = {print, increment}; // 函数指针数组
int array_size = sizeof(array) / sizeof(array[0]); // 数组大小
// 使用函数指针遍历数组
for (int i = 0; i < array_size; i++) {
array[i](5); // 调用数组对应的函数,传入参数
}
```
在这个例子中,`array`数组通过函数指针实现了对两个函数的操作,每次循环都会根据当前索引i动态地调用相应的函数。
相关问题
函数指针、数组指针、结构体指针
函数指针、数组指针和结构体指针都是C/C++等支持指针的语言中重要的概念:
1. **函数指针**:
函数指针是一个指向函数的指针,它保存了一个函数的地址。通过函数指针,我们可以在运行时动态地调用某个特定的函数。例如:
```cpp
void (*func_ptr)(int) = &myFunction; // myFunction是接受一个int并返回void的函数
func_ptr(10); // 调用myFunction(10)
```
2. **数组指针**:
数组名本身就是一个指针,它指向数组的第一个元素。数组指针允许我们在不暴露数组长度的情况下遍历数组。例如:
```cpp
int arr[5] = {1, 2, 3, 4, 5};
int *arr_ptr = arr; // arr_ptr指向数组的第一个元素
for (int i = 0; i < 5; ++i) {
printf("%d ", *(arr_ptr + i)); // 输出数组内容
}
```
3. **结构体指针**:
结构体指针是指向结构体的指针,它可以指向整个结构体的对象实例。当我们有指向结构体成员的指针时,可以用它间接访问结构体的其他成员。例如:
```cpp
struct Person {
char name[20];
int age;
};
Person *person_ptr = &john; // john是一个Person类型的结构体实例
printf("%s is %d years old.", person_ptr->name, person_ptr->age);
```
这些指针类型都提供了一种灵活的方式来操作程序的不同部分,尤其是对于动态绑定和回调函数非常重要。
用c语言:编程读入若干整数(不超过50个)到数组中,然后倒序输出,遍历数组时用指针实现。
以下是用 C 语言实现读入若干整数到数组中,然后倒序输出并使用指针实现的代码:
```c
#include <stdio.h>
int main() {
int nums[50], n, *p;
printf("输入数字个数(不超过50个):");
scanf("%d", &n);
printf("输入 %d 个数字:", n);
for (p = nums; p < nums + n; p++) {
scanf("%d", p);
}
printf("倒序输出数字:");
for (p = nums + n - 1; p >= nums; p--) {
printf("%d ", *p);
}
printf("\n");
return 0;
}
```
首先定义了一个 `nums` 数组来存储输入的数字,同时定义了变量 `n` 来记录输入数字的个数,定义了指针 `p` 来遍历数组。在读入数字时,通过 for 循环遍历数组并使用指针 `p` 指向数组中每一个元素,然后通过 `scanf` 函数读入数字。在输出数字时,同样使用 for 循环倒序遍历数组并使用指针 `p` 指向数组中每一个元素,然后通过 `printf` 函数输出数字。
需要注意的是,在 for 循环中,使用指针 `p` 指向数组中每一个元素时,需要使用 `nums + n` 来表示数组的最后一个元素的地址,因为数组下标从 0 开始,所以最后一个元素的下标是 `n - 1`,因此最后一个元素的地址是 `nums + n - 1`。同样,使用指针 `p` 遍历数组时,需要使用 `nums + n - 1` 作为循环的终止条件,因为这时 `p` 指向的是数组的最后一个元素。
阅读全文