1. 指针 (Pointer)
指针是一个变量,用来存储另一个变量的内存地址。
#include <stdio.h>
int main() {
int x = 10;
int *p = &x; // p 是一个指向 x 的指针
printf("Value of x: %d\n", x); // 输出 10
printf("Address of x: %p\n", (void*)&x); // 输出 x 的地址
printf("Value of p: %p\n", (void*)p); // 输出 p 中存储的地址
printf("Value pointed by p: %d\n", *p); // 输出 10
return 0;
}
2. 数组 (Array)
数组是一组相同类型的数据的集合。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个整数的数组
for (int i = 0; i < 5; i++) {
printf("arr[%d] = %d\n", i, arr[i]); // 输出数组中的元素
}
return 0;
}
3. 指针数组 (Array of Pointers)
指针数组是一个数组,其中每个元素都是一个指针。
#include <stdio.h>
int main() {
int x = 10, y = 20, z = 30;
int *arr[3] = {&x, &y, &z}; // 定义一个包含三个整数指针的数组
for (int i = 0; i < 3; i++) {
printf("Value pointed by arr[%d] = %d\n", i, *arr[i]); // 输出指针指向的值
}
return 0;
}
4. 数组指针 (Pointer to an Array)
数组指针是一个指向数组的指针。
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int (*p)[5] = &arr; // p 是一个指向包含5个整数的数组的指针
for (int i = 0; i < 5; i++) {
printf("(*p)[%d] = %d\n", i, (*p)[i]); // 输出数组中的元素
}
return 0;
}
5. 函数指针 (Function Pointer)
函数指针是一个指向函数的指针,可以用来调用函数。
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*p)(int, int) = add; // p 是一个指向函数 add 的指针
int result = p(2, 3); // 通过指针调用函数
printf("Result of add(2, 3): %d\n", result); // 输出 5
return 0;
}
6. 指针函数 (Pointer Function)
指针函数是返回指针的函数。
#include <stdio.h>
int* getPointer(int *p) {
return p; // 返回指针
}
int main() {
int x = 10;
int *p = getPointer(&x); // 调用返回指针的函数
printf("Value of x: %d\n", *p); // 输出 10
return 0;
}
7. 函数指针数组 (Array of Function Pointers)
函数指针数组是一个数组,其中每个元素都是一个指向函数的指针。
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return b != 0 ? a / b : 0;
}
int main() {
// 定义一个包含四个函数指针的数组
int (*operations[4])(int, int) = {add, subtract, multiply, divide};
int a = 10, b = 5;
for (int i = 0; i < 4; i++) {
printf("Result: %d\n", operations[i](a, b)); // 调用数组中的函数指针
}
return 0;
}
总结
- 指针:存储一个变量的内存地址。
- 数组:相同类型元素的集合。
- 指针数组:数组中的每个元素都是指针。
- 数组指针:指向数组的指针。
- 函数指针:指向函数的指针,用来调用函数。
- 指针函数:返回指针的函数。
- 函数指针数组:数组中的每个元素都是指向函数的指针。