有趣的C struct语法/类型

Fal*_*rri 2 c struct

我在Python解释器源代码中遇到过这个问题.

void
PyThread_delete_key_value(int key)
{
    long id = PyThread_get_thread_ident();
    struct key *p, **q;
Run Code Online (Sandbox Code Playgroud)

有趣的部分是struct key *p, **q;电话.这个结构究竟在做什么?我对这究竟是什么结构感到困惑.这不一样吗,这个?

struct 1 *p;
Run Code Online (Sandbox Code Playgroud)

我很困惑.

编辑:

虽然已经回答了这个问题,但我应该澄清一下我的问题.特别是这个词key被重用的事实,我不知道编译器在不同的命名空间中考虑它们.

Set*_*son 5

key存在于两个不同的命名空间中.曾经作为一个变量,曾经作为一个结构.编译器知道'struct key'和int key是不同的东西.


mip*_*adi 5

p是指向类型对象的指针struct key.q是指向类型对象的指针的指针struct key.

你可以像这样定义一个结构:

struct key { int val; };
Run Code Online (Sandbox Code Playgroud)

在这种情况下类型是struct key.

keystruct是类型(的一部分struct key),而不是与整数参数相关联key.