int (*p)(int)
时间: 2023-08-15 19:07:36 浏览: 37
`int (*p)(int)` 是一个函数指针声明,表示 `p` 是一个指向函数的指针,该函数接收一个 `int` 类型的参数,返回一个 `int` 类型的值。
例如:
```c++
#include <iostream>
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
int (*p)(int); // 定义一个函数指针
p = add; // 将add函数的地址赋值给p
std::cout << p(1) << std::endl; // 调用函数指针,输出2
p = sub; // 将sub函数的地址赋值给p
std::cout << p(1) << std::endl; // 调用函数指针,输出0
return 0;
}
```
以上代码定义了一个函数指针 `p`,该指针可以指向一个接收一个 `int` 类型的参数、返回一个 `int` 类型的值的函数。在 `main` 函数中,我们将 `add` 函数的地址赋值给 `p`,然后通过 `p` 调用 `add` 函数并输出结果。接着,我们将 `sub` 函数的地址赋值给 `p`,然后通过 `p` 调用 `sub` 函数并输出结果。
相关问题
解释一下int *P int *p [13] int * (p [13]) int **p int (*p)[13] int *f() int (*f)() int (*(*f())[13])() int (*(*x[3])())[5]数据
1. `int *P`: P 是一个指向 int 类型的指针,可以使用 P 来存储 int 类型变量的地址,或者通过 P 访问 int 类型变量的值。
2. `int *p [13]`: p 是一个长度为 13 的数组,每个元素是一个指向 int 类型的指针,可以使用 p[i] 来存储或访问第 i 个元素指向的 int 类型变量的地址或值。
3. `int * (p [13])`: 这个声明与 `int *p [13]` 的作用是相同的,只是语法上略有不同,可以看作是将数组名 p 与指针符号 * 拆开了,括号的作用是为了保证优先级。
4. `int **p`: p 是一个指向指针的指针,可以用于存储指向 int 类型变量的指针的地址,或者通过 p 访问指向指针的指针所指向的 int 类型变量的值。
5. `int (*p)[13]`: p 是一个指向长度为 13 的 int 类型数组的指针,可以用于存储 int 类型数组的地址,或者通过 p 访问指向的数组元素的值。
6. `int *f()`: f 是一个函数,返回一个指向 int 类型变量的指针,可以使用 f() 来调用该函数,并获得指向 int 类型变量的指针。
7. `int (*f)()`: f 是一个指向函数的指针,该函数返回 int 类型的值,可以使用 f 来存储该函数的地址,或者通过 f() 来调用该函数。
8. `int (*(*f())[13])()`: f 是一个函数,返回一个指针数组,数组的每个元素都是指向函数的指针,这些函数返回 int 类型的值。这种语法比较复杂,可以将其分解为几个部分:`f()` 表示调用函数 f,`(*f())[13]` 表示返回一个长度为 13 的指针数组,数组的每个元素都是指向函数的指针,`int (*(*f())[13])()` 表示这些函数都返回 int 类型的值。
9. `int (*(*x[3])())[5]`: x 是一个长度为 3 的指针数组,数组的每个元素都是指向返回长度为 5 的 int 类型数组的指针的函数的指针。这种语法也比较复杂,可以将其分解为几个部分:`x[3]` 表示一个长度为 3 的指针数组,`(*x[3])()` 表示数组的每个元素都是一个函数指针,该函数返回一个指向 int 类型数组的指针,`int (*(*x[3])())[5]` 表示这些指针指向的数组都有长度为 5。
int* p与 int *p
int* p与int *p是等价的,都表示定义一个指向int类型的指针变量p。星号可以靠近int或者靠近p,没有区别。这是因为星号是用来修饰p的,而不是修饰int。所以int* p和int *p都是有效的写法。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [int* p;和int *p;应怎样理解(c++语言中星号的位置)?](https://blog.csdn.net/qiuyeyijian/article/details/88080549)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [C语言中指针 int *p=0;和int *p;*p=0;和”&“的关系和区别详解](https://download.csdn.net/download/weixin_38537941/14851842)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]