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 認識到它是乙個指向某種函式的指標,...