函数指针基础:1. 获取函数的地址(即函数名)2. 声明一个函数指针3.使用函数指针来调用函数获取函数指针:
时间: 2024-05-10 18:12:26 浏览: 14
获取函数指针需要使用&运算符,例如:
```C
#include <stdio.h>
void function1() {
printf("This is function 1\n");
}
void function2() {
printf("This is function 2\n");
}
int main() {
void (*ptr)(); //声明一个函数指针
ptr = &function1; //获取函数1的地址
(*ptr)(); //调用函数1
ptr = &function2; //获取函数2的地址
(*ptr)(); //调用函数2
return 0;
}
```
这段代码中,我们先声明了一个函数指针`ptr`,它可以指向任何没有参数和返回值的函数。然后我们使用`&`运算符获取了函数1和函数2的地址,将其分别赋给`ptr`,最后通过`(*ptr)()`的方式来调用函数1和函数2。
相关问题
2.输入一个1~7之间的整数,通过指针函数输出对应的星期名。
可以使用以下代码实现:
```c
#include <stdio.h>
char* getWeekday(int day) {
static char* weekdays[] = {"", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"};
if (day < 1 || day > 7) {
return "";
}
return weekdays[day];
}
int main() {
int day;
printf("请输入一个1~7之间的整数:");
scanf("%d", &day);
printf("%s\n", getWeekday(day));
return ;
}
```
这里使用了一个指针函数 `getWeekday`,它接受一个整数参数 `day`,返回一个指向字符串的指针。在函数内部,我们定义了一个静态字符串数组 `weekdays`,里面存储了每个星期的名字。如果输入的整数不在1~7之间,函数返回一个空字符串。否则,函数返回对应的星期名。
在 `main` 函数中,我们先读入一个整数 `day`,然后调用 `getWeekday` 函数获取对应的星期名,并输出到屏幕上。
1.数组的应用 2.函数的应用 3.指针的应用
1. 数组的应用:
数组是一种数据结构,可以存储一组相同类型的数据。我们可以使用数组来处理大量的数据,例如存储学生的成绩、员工的工资、图像的像素等。
例如,以下代码定义了一个长度为5的整数数组,并对其进行初始化:
```
int arr[5] = {1, 2, 3, 4, 5};
```
我们可以通过数组下标来访问数组中的元素,例如:
```
int x = arr[2]; // x的值为3
```
2. 函数的应用:
函数是一段可重用的代码,它可以执行特定的任务。函数可以接受输入参数,执行特定的操作并返回一个结果。
例如,以下代码定义了一个名为add的函数,它接受两个整数作为参数,并返回它们的和:
```
int add(int a, int b) {
return a + b;
}
```
我们可以在程序中调用该函数,例如:
```
int x = 3;
int y = 4;
int z = add(x, y); // z的值为7
```
3. 指针的应用:
指针是一个变量,它存储了一个内存地址。我们可以使用指针来访问和修改存储在该地址中的值。
例如,以下代码定义了一个指向整数的指针,并将其初始化为指向变量x的地址:
```
int x = 3;
int *p = &x;
```
我们可以使用指针来访问和修改x的值,例如:
```
*p = 4; // x的值变为4
```
指针还可以用于动态分配内存。例如,以下代码使用malloc函数来动态分配一个长度为10的整数数组,并返回指向该数组的指针:
```
int *p = (int *)malloc(10 * sizeof(int));
```
我们可以使用指针来访问和修改该数组的元素,例如:
```
p[0] = 1;
p[1] = 2;
```