p4的out 和inout的区别


• out parameters are uninitialized (parameters of type header or header_union are set to “invalid”)
and are treated as l-values (See Section 6.6) within the body of the method or function. An arguments
passed as an out parameter must be an l-value; after the execution of the call, the value of
the parameter is copied to the corresponding storage location for that l-value.
• inout parameters are both in and out. An argument passed as an inout parameter must be an
l-value.

这个是解释。我是不是能理解成:
out 有两个条件:1.没有初始化,也就是没有实例化的。2.必须是左值
inout:是左值就行。
不知道自己理解是不是有问题,还有一个问题就是out和inout的作用到底是啥,两者的区别,求解惑!
已邀请:

Wasdns

赞同来自:


按照我粗浅的理解,in、out、inout是参数的三种不同模式。如果把一个 control flow 想象成一个盒子,那么in模式下的参数A,等价于你需要向这个盒子提供参数A,这个盒子才能进行处理;而out模式下的参数B,等价于这个盒子会返回一个B给你;而inout模式下的参数C,等价于你提供C给这个盒子,这个盒子更新C的值,再返回给你。纯属个人理解,如果有误还望各位大神们指出。

要回复问题请先登录注册