首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些指针、指针到指针、函数指针和数组指针的含义。

这些指针、指针到指针、函数指针和数组指针的含义。
EN

Stack Overflow用户
提问于 2020-06-08 15:36:34
回答 3查看 192关注 0票数 0

我是一名大学生,我们的老师告诉我们这些建议的意义,但我只想弄清楚其中的一些:

代码语言:javascript
复制
1. int *p1;
2. int *p2[10];
3. int (*p3)[10];
4. int (*p4)();
5. int **p5();
6. int (**p6)[10];
7. int (**p7)();
8. int *(*p8)();
9. int (*p9[10])();
10. int **p10[10];

这就是我到目前为止想出来的:

  • p1是指向int的指针。
  • p2是由10个int指针组成的数组。
  • p3是指向具有10个元素的静态数组的指针。
  • p4是一个函数指针
  • p5根本不是指针,而是返回int**的函数的原型。
  • p6是一个由10个指针到指针的数组。
  • p7是指向函数指针的指针。

你们能帮帮我吗?因为我们的老师告诉我们这些会出现在考试上

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-08 15:40:20

cdecl.org可用于破译混乱的声明,如您的示例:

int (*p9[10])(); =>将p9声明为指向函数返回int的指针的数组10

否则,您可以使用顺时针/螺旋规则手动遍历它们。

票数 4
EN

Stack Overflow用户

发布于 2020-06-08 15:56:45

所有7个指针都被正确地确定,但是您应该指定参数类型和返回类型。

例如:

  1. int **p5(); -不带参数的函数,返回指向int指针的指针。
  2. int *(*p8)(); -指向没有参数的函数的指针,返回指向int的指针。
  3. int (*p9[10])(); -由10个指针组成的数组不带任何参数,返回int
  4. int **p10[10]; -指向指向int的指针的10个指针数组。

如果我是一个编译器,我可以提示空参数列表,如f.e。clang做:

警告:此函数声明不是原型-原型

在实践中使用这些构造时,请使用(void)而不是()

注意,如果你在考试,想想大卫·安德森( David )的顺时针/螺旋规则,如这里所示。

票数 0
EN

Stack Overflow用户

发布于 2020-06-08 17:09:53

1>pointer到整数

代码语言:javascript
复制
int *p1;

指向整数的10指针的2>array

代码语言:javascript
复制
int *p2[10];

指向10个整数数组的3>指针

代码语言:javascript
复制
int (*p3)[10]

函数的4>指针,该函数接受无效参数并返回整数

代码语言:javascript
复制
int (*p4)();

5>>是一个名为p5并返回int**的函数的原型(减速)

代码语言:javascript
复制
int **p5();
``````````

6>>是一个由10个指针到指针的数组,指向整数值。

代码语言:javascript
复制
 int (**p6)[10]
````````

指向带空参数并返回int的函数的指针的7>>is指针

代码语言:javascript
复制
int (**p7)();

8>>pointer用于接受无效参数和返回地址或指针的函数

代码语言:javascript
复制
int *(*p8)();
`````````````

由10个指针组成的9>>array,指向接受无效参数并返回整数的函数。

代码语言:javascript
复制
 int (*p9[10])();
```````````````

10>>指的是指向整数值的10个指针数组中的第一个元素。

代码语言:javascript
复制
int **p10[10];
代码语言:javascript
复制
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62265769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档