c - 如何在 C 中声明指向结构的指针?
问题描述
我了解到可以通过 3 种不同的方式声明指针:
int* a;
int *b;
int * c;
我更喜欢:
int* a;
在声明指向结构的指针时,这样写是否正确:
struct Card {
int a;
};
struct Card my_card = { 3, 7 };
struct Card* p = &my_card;
(*p).a = 8;
我很困惑,因为我发现它的所有地方都声明如下:
struct Card *p = &my_card;
提前致谢。
解决方案
如果是某个类型说明符,则可以通过以下任何方式声明T
指向该类型对象的指针T
T*p;
T* p;
T *p;
T * p;
例如 if T
is int *
then 指针声明看起来像
int **p;
int ** p;
int * *p;
int * * p;
与声明指向结构的指针相同的方式
struct Card*p = &my_card;
struct Card* p = &my_card;
struct Card *p = &my_card;
struct Card * p = &my_card;
注意你可能会写
T ( *p );
但你可能不会写
( T* ) p;
还有另一个微妙之处。如果你会写例如
int* p1, p2
然后变量p1
具有类型int *
,而变量p2
具有类型int
而不是int *
.
但如果你会写
typedef int * T;
当在这个声明中
T p1, p2;
这两个变量都有类型int *
。
推荐阅读
- reactjs - 状态钩子中的计数器不递增
- javascript - 选择选项时反应更新多个组件
- java - 如果 Java 子包不提供特殊的访问关系,它们会做什么?
- cytoscape - 在 Cytoscape 上将 GOslim 输入到 ClueGO
- flutter - 如何使用 Image Picker 获取图像的“真实”路径?
- spring-boot - S3AsyncClient - 删除授权标头
- javascript - Cancelling interval based on a promise result in Angular
- javascript - 使用 Django 时的 CSS 最佳实践
- ios - 关于在用户查询后将数据从 API 传递到视图控制器的问题 - Swift
- python - 角色慢慢地从地板上掉下来,而不是完全停下来