【问题标题】:Explain this function definition: function(struct net * const *pnet)解释一下这个函数定义:function(struct net * const *pnet)
【发布时间】:2012-12-20 17:18:11
【问题描述】:

我正在浏览 linux 内核源代码并找到了这个函数定义。

function(struct net * const *pnet)

谁能解释一下这是什么意思。它是 net* 或 net** 还是 const net* 或 const net**?

谢谢

【问题讨论】:

    标签: c linux-kernel


    【解决方案1】:

    换句话说:一个(非常量)指针,指向一个指向(非常量)结构的常量指针数组。

    所以,你可以分配一个不同的数组:

    pnet = myArrayOfStructs;
    

    或者你可以改变一个结构:

    pnet[k]->proc_inum = 17;
    

    但你不能改变一个完整的结构:

    pnet[k] = &pnet[k+1]; // compiler error
    

    【讨论】:

      【解决方案2】:

      pnet 是一个指向 struct net 的 const 指针(在这种情况下,您只需从右到左从变量名称读取到类型名称,将 * 读取为“指针”) .

      【讨论】:

      • 某处有一个非常酷的网页,可以将疯狂的 C 语法翻译成英语,就像这样。有谁知道那是哪里?
      • @JonathonReinhart:cdecl.com,如果没记错的话。快速检查了一下,似乎不是这样。嗯……啊,这里是——cdecl.org。
      • 这是否意味着它是一个双指针(指向 const 指针的指针)?你们能说说它的用途吗?
      • 我感兴趣的是 const 部分。双指针通常用于在函数中设置指针。如果使用 const,这里会有什么变化?
      • cdecl.org... 很酷,以前从未见过。具有讽刺意味的是,我在那里粘贴了 OP 的示例,它产生了 syntax error
      猜你喜欢
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2013-03-31
      相关资源
      最近更新 更多