c代码中的括号是什么意思?
What do the parentheseses mean in the c code?
我连c语言初学者都算不上
我看到了来自 cpython 源代码的代码:
typedef struct _formatdef {
char format;
Py_ssize_t size;
Py_ssize_t alignment;
PyObject* (*unpack)(_structmodulestate *, const char *,
const struct _formatdef *);
int (*pack)(_structmodulestate *, char *, PyObject *,
const struct _formatdef *);
} formatdef;
在第 5 行,我知道 PyObject*
定义了一个指向 PyObject 类型变量的指针,但是 (*unpack)
是什么意思?下面的 (_structmodulestate *)
是什么意思?
这是一个函数指针声明。
这个:
float x;
声明一个类型为 float
的变量,名称为 x
。
这个:
float *p;
声明了一个名为 p
.
的 float*
类型的变量(指向 float
的指针)
这个:
int foo(float *p);
声明了一个名为 foo
的函数,它接受一个 float*
作为参数,returns 一个 int
.
这个:
PyObject* (*unpack)(_structmodulestate *, const char *, const struct _formatdef *);
声明了一个名为unpack
的函数指针,它指向一个以三个指针(各种类型)为参数的函数,并且returns一个PyObject*
.
我连c语言初学者都算不上
我看到了来自 cpython 源代码的代码:
typedef struct _formatdef {
char format;
Py_ssize_t size;
Py_ssize_t alignment;
PyObject* (*unpack)(_structmodulestate *, const char *,
const struct _formatdef *);
int (*pack)(_structmodulestate *, char *, PyObject *,
const struct _formatdef *);
} formatdef;
在第 5 行,我知道 PyObject*
定义了一个指向 PyObject 类型变量的指针,但是 (*unpack)
是什么意思?下面的 (_structmodulestate *)
是什么意思?
这是一个函数指针声明。
这个:
float x;
声明一个类型为 float
的变量,名称为 x
。
这个:
float *p;
声明了一个名为 p
.
float*
类型的变量(指向 float
的指针)
这个:
int foo(float *p);
声明了一个名为 foo
的函数,它接受一个 float*
作为参数,returns 一个 int
.
这个:
PyObject* (*unpack)(_structmodulestate *, const char *, const struct _formatdef *);
声明了一个名为unpack
的函数指针,它指向一个以三个指针(各种类型)为参数的函数,并且returns一个PyObject*
.