鐵之狂傲

標題: 結構與指標的關係? [列印本頁]

作者: 傲月光希    時間: 07-7-14 08:38
標題: 結構與指標的關係?

typedef int *NEW;
NEW t;

int *t;

請問
這兩種在變數上的意義有何不同?

我用Dev C++試過,好像沒什麼不同,請知道的人解釋一下
作者: turnX    時間: 07-7-14 08:38
原文由傲月光希 於 07-7-14 03:49 PM 發表
我想問的並不是typedef的用法
我想知道先把一個結構或型態定成 *識別字在宣告變數
跟直接宣告一個指標有啥不同


沒什麼不同,難道你喜歡把程式寫長一點?
每次遇到節構便寫這麼長
  1. struct NODE{
  2.       int x;
  3.       struct  NODE * next;
  4. };

  5. struct NODE * node;

  6. /////////////////////////////////////////////

  7. typedef struct _node{
  8.       int x;
  9.       struct _node * next;
  10. }NODE;

  11. NODE * node;

  12. /////////////////////////////////////////////

  13. typedef struct _node{
  14.       int x;
  15.       struct _node * next;
  16. }NODE;

  17. typedef NODE * pNODE;

  18. pNODE node;
複製代碼

其實這在於個人撰寫的喜好,上面三種方式都是一樣的意思,並無不同


而且照你說的問題的確是有一個不同
如果直接宣告的話,當你宣告兩變數的指標

  1. int *a,b; //b並不會是 int *
  2. int * a, *b; //才正確

  3. 如果你使用了

  4. typedef int * pINT;

  5. pINT a,b;  //這樣a,b都是pINT(int *) 你看這樣的差異有何不同
複製代碼


這一個就不知道是否是你想要的不同

[ 本文最後由 turnX 於 07-7-14 08:42 PM 編輯 ]
作者: turnX    時間: 07-7-14 12:49
typedef是用來自定變數或型態
知道其用法的話,應該是沒有疑問的對於上述兩種寫法
作者: 傲月光希    時間: 07-7-14 15:49
我想問的並不是typedef的用法

我想知道先把一個結構或型態定成 *識別字在宣告變數

跟直接宣告一個指標有啥不同




歡迎光臨 鐵之狂傲 (https://gamez.com.tw/)