2012-09-16 94 views
1

這可能是一個非常基本的問題,但我是C中的新手,所以請耐心等待。在函數中傳遞結構類型的指針

我經歷了C語言編寫的固件的一些文件我碰到這個地方來了:

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

然後,我有哪裏一個指針類型被傳遞的功能。

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

我不知道在哪裏兩件事: 從我的Java的經驗,我覺得第一個片段相當於很像Java對象類,然後第二個片段使用SX的子類的超類。但我不確定。任何人都可以確認嗎? 從我的小ç經驗,到目前爲止,我覺得更易於理解的方式傳遞指針的類型將是如下:

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

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

但我只是懷疑我缺少從這張照片的東西。 在此先感謝!

+1

你能找到'xtype'的定義嗎? – nneonneo

回答

6

這是不尋常的語法。我懷疑xtype是地方和定義一個宏可以這個樣子

#define xtype const 

無論如何,可變sx xtype *sp聲明不spsx或本亞型xtype是我見過很長時間以來最糟糕的預處理器魔法。


至於你的第二個例子,這也沒有模擬子分類。這是什麼:

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

說是struct A相同B。這是一個typedef:它只是定義了一個新的類型,一個簡稱爲更長名稱的改編版本。

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

什麼做繼承。