我了解到,指针可以通过三种不同的方式来声明:
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;提前谢谢。
发布于 2021-10-14 16:15:49
你把空间放在哪里并不重要。struct Card* p和struct Card *p同样有效;这只是一个风格的问题,你喜欢哪一个。
我同意第二种形式更常见,但最重要的是在代码中始终使用一种形式。您的老板/教师/其他开发人员也可能有编码风格的标准来指定使用哪种形式。
发布于 2021-10-14 16:15:45
如果T是某种类型说明符,那么指向T类型对象的指针可以通过下列任何一种方式声明
T*p;
T* p;
T *p;
T * p;例如,如果T是int *,那么指针声明可以如下所示
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 *。
发布于 2021-10-14 16:19:08
int *a比int* a更有意义。在C中,*a可以读取为“a的内容”,因此int *a可以被读取为“a的内容是整数”,就像int a读取“a是整数”一样。当其他答案清除时,空格在这里并不重要--它们对编译器来说都是一样的。
这种书写方式在声明多个指针变量(如int *a, *b )时也更有意义。编写int* a, b并期望a和b都是int指针很容易出错。
https://stackoverflow.com/questions/69574009
复制相似问题