函数指针、数组指针、结构体指针
时间: 2024-10-24 20:06:49 浏览: 9
基于C#调用c++Dll结构体数组指针的问题详解
函数指针、数组指针和结构体指针都是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);
```
这些指针类型都提供了一种灵活的方式来操作程序的不同部分,尤其是对于动态绑定和回调函数非常重要。
阅读全文