【问题标题】:Passing a pointer to structure type in a function在函数中传递指向结构类型的指针
【发布时间】:2012-09-16 06:08:21
【问题描述】:

这可能是一个非常基本的问题,但我是 C 的新手,所以请多多包涵。

我正在浏览一些用 C 编写的固件的文档,我遇到了这个问题:

typedef struct {
                 int x;
                 int arr[10];
               } sx;

然后我有一个函数,其中传递了指向该类型的指针。

int f(sx xtype *sp, int i){
                            return sp -> arr[i];
                          }

我不确定两件事在哪里: 根据我的 Java 经验,我认为第一个 sn-p 相当于一个超类,很像 Java 中的 Object 类,然后第二个 sn-p 使用 sx 的子类。但是我不确定。有人可以确认吗? 从我目前的小 C 经验来看,我认为将指针传递给类型的更易于理解的方法如下:

typedef struct xtype {
                 int x;
                 int arr[10];
                 } sx;

int f(sx *sp, int i){
                     return sp -> arr[i];
                    }

但我只是怀疑我从这张照片中遗漏了一些东西。 提前致谢!

【问题讨论】:

  • 你能找到xtype的定义吗?

标签: c struct typedef


【解决方案1】:

这是不寻常的语法。我怀疑xtype 是在某处定义的宏,可能看起来像这样

#define xtype const

无论如何,变量sx xtype *sp 的声明确实sp 指的是sx 的子类型xtype,或者这是我最糟糕的预处理器魔法好久没见了。


至于您的第二个示例,这也不是子类化模型。这是什么:

typedef struct A {
  /* ... */
} B;

表示struct AB 相同。这是一个typedef:它只是定义了一个新类型,一个长名称的简短改写版本。

void func(struct A);
void func(B); // exactly equivalent

它与继承无关

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多