链接列表何时使用->以及何时使用。

米海·布拉图列斯库(Mihai Bratulescu)

假设一个名为Point的结构具有x,y和next;我什么时候写P.y,什么时候P -> next因为这段代码:

typedef struct
{
    int x, y;
    struct Point *next;
} Point;

我无法使用,P -> next也无法尝试if (P == NULL)

  1. 我可以结合使用P.xP -> next吗?
  2. 什么时候必须使用->和何时。
merlin2011

如果P有类型Point,那么您将始终使用.

 Point p;
 p.next;

如果P有类型Point*,那么您将始终使用->

 Point* p
 p->next;

如果您确实想.在后一种情况下使用,则必须先遵循。

Point *p;
(*p).next;

仅在后一种情况下,检查才有意义p == NULL,因为指针可以是,NULL但结构通常不是。


由于next本身被声明为指针,因此您应该使用->该指针跟随下一个指针。

Point p;
p.next->next; // Will only work if p.next is NOT NULL.

Point* p;
p->next->next; // Will only work if p->next is NOT NULL.

更新:要删除警告,请将声明更改为以下内容。

typedef struct Point
{
    int x, y;
    struct Point *next;
} Point;

问题是外部声明使用的是typedef而不是struct的标签,而内部声明使用的struct Point有关为什么会出现此行为的详细信息,请参见此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

何时使用断言以及何时使用异常

何时使用通用方法以及何时使用通配符?

何时以及为何使用JumboEnumSet

何时使用@RunWith以及何时使用@ExtendWith

Elixir:何时使用.ex以及何时使用.exs文件

何时使用“可选”依赖项以及何时使用“提供”范围?

何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?

何时使用状态以及何时使用道具?

何时使用对象以及何时使用数组

何时使用TableController <T>以及何时使用Custom DomainManager

何时使用构造函数以及何时使用OnInit

何时使用自下而上的DP以及何时使用自上而下的DP

何时使用Apache Helix以及何时使用Apache Mesos

何时使用线程以及何时使用线程池?

何时使用countByValue以及何时使用map()。reduceByKey()

关于何时撰写以及何时使用$的困惑

何时使用定义以及何时使用让球拍

何时使用组合以及何时使用继承

何时以及何时不使用role =“ button”

在SQL中何时使用“ IS”以及何时使用“ =”

何时以及何时不使用Web服务?

jQuery何时使用if语句以及何时使用函数?

AngularJS-何时使用隔离范围以及何时使用服务

何时使用length以及何时使用length()

何时在angularfire中使用uid以及何时使用$ id

在 css 中何时使用填充以及何时使用边距

何时使用 $this 以及何时使用简单变量

Django:何时使用模型字段以及何时使用反向查询。

何时使用 MassTransit IRequestClient 以及何时使用 IBus.Send