typedef 與 指標連用

2021-09-11 23:05:40 字數 1292 閱讀 9933

typedef struct lnodelnode,*linklist;

int listinsert_l(linklist  &l, int i, int e)

if(!p||j>i-1) return 0;

s = (lnode *)malloc(sizeof(lnode));

if(!s) return 0;

s->data = e; 

s->next = p->next; p->next = s;

return 1;      }

typedef  struct lnode lnode;

typedef  struct lnode *linklist;

第乙個好理解,是為struct lnode 建立乙個簡單的別名,以後就用lnode代替它了。

那第二個理解成什麼呢?我開始就理解成了指向這個lnode的指標linklist.

但是這個函式呼叫裡面吧,卻把linklist當成了乙個別名或者乙個型別,那是不是理解成因為有了typedef就建立了乙個linklist指標代表所有指向這個結構的指標。

typedef struct 

*pstr; 

這個指標怎麼用法?

舉乙個相似的例子,一般指向整型的指標都是如下使用的:

int *p ;   指向乙個整型的指標。

如果,在前面我們使用了   typedef int * pint;

則上面的宣告方法,可以改為: pint p;同樣是宣告乙個指向整型的指標。

上面的結構體是一樣的。也同樣理解。

例如:tyoedef int *pint;

表示的意思並不是定義乙個指向int型指標,而是表示定義一種新的資料型別,這種型別是指向int型的指標,那麼如果下面有pint a;則這時的a是指向int型指標

同理typedef struct 

*pstr; 

表示定義一種資料型別,該型別是指向結構體的

所以下面如果有*pstr  p;則p是乙個指向結構體的指標

但是很顯然p是懸垂指標,而題中這種情況是不能靜態分配資料的

所以可以動態的分配乙個空間來讓p有所指向

c++可以這麼做:p=new *p

c沒有new語句,那麼可以這麼做:p=(pstr)malloc(sizeof(*p));

全手打的,希望對你有幫助 

第二個疑惑:

insert函式裡面為什麼有個位址符,後來經過程式除錯後,我覺得有沒有這個位址符沒有任何影響,因為本身l就被定義了是linklist型的也就是說它指向的是這個結點結構的指標,裡面本身存在的就是個位址,然後直接賦值給p。

函式指標與typedef

一 簡單的函式指標的應用。形式 1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數 pfun 首先我們根據前面提到的 形式 1 認識到它是乙個指向某種函式的指標,這種函式引數是乙個 int型,返回值是 char 型...

函式指標與typedef

關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...

函式指標與typedef

關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...