C指针符号 * 用于变量之后,而不是[已关闭]之前

y1aodyip  于 2023-02-18  发布在  其他
关注(0)|答案(2)|浏览(141)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。

2天前关闭。
截至2天前,社区正在审查是否重新讨论此问题。
Improve this question
我正在学习C语言,我遇到了一行代码,它与下面的代码类似:

void myControl(const myInput*, myOutput*, myRuntime*, const myConfig*);

变量后面的 * 符号是什么意思?
我在互联网上寻找“C语言 * 含义”,但我总是发现 * 作为指针的符号,放在变量名之前而不是之后。

oxalkeyp

oxalkeyp1#

行中:

void myControl(const myInput*, myOutput*, myRuntime*, const myConfig*);
  • myControl是一个带4个参数的函数。
  • 函数不返回值。

每个参数都是指向一个类型(可能是一个结构)的指针。一些结构是const(不可更改的)。一些结构可以更改。
具有参数名的常规形式的完整函数原型如下所示:

void myControl(const myInput* inputData, myOutput* outputData, myRuntime* runTimeInfo, const myConfig* configuration);
  • 参数inputData是指向类型myInput的结构的指针。

这是无法改变的。

  • 参数outputData是指向类型myOutput的结构的指针。

它可以被改变。

  • 参数runTimeInfo是指向类型myRuntime的结构的指针。

它可以被改变。

  • 参数configuration是指向类型myConfig的结构的指针。

这是无法改变的。

jv4diomz

jv4diomz2#

这条线

void myControl(const myInput*, myOutput*, myRuntime*, const myConfig*);

function declaration
在C23之前,* 函数声明 * 和function definition之间的一个关键语法差异是,在函数声明中,参数列表中每个参数的 * 标识符 *(您称为 "变量名")是可选的。
另一方面,在函数定义中需要每个参数的标识符:

void myControl(const myInput* input, myOutput* ouput,
        myRuntime* rt, const myConfig* config)
{
    /* use the arguments, etc. */
    (void) input;
    (void) output;
    (void) rt;
    (void) config;
}

在示例中看到的只是构成函数 * signature * 的类型,其中每个参数都是pointer type,如*符号所示。

相关问题