<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 251  文章 - 504  trackbacks - 0
    <2006年11月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    本博客系個人收集材料及學習記錄之用,各類“大俠”勿擾!

    留言簿(14)

    隨筆分類

    收藏夾

    My Favorite Web Sites

    名Bloger

    非著名Bloger

    搜索

    •  

    積分與排名

    • 積分 - 202538
    • 排名 - 285

    最新評論

    指向結構的指針

    為什么使用指向結構的指針?

    1  就像指向數組的指針比數組本身更容易操作一樣,指向結構的指針通常都比結構本身更容易操作.

    2  在一些早期的 C 實現中,結構不能作為參數被傳遞給函數,但指向結構的指針可以.

    3  許多奇妙的數據表示都使用了包含指向其他結構的指針的結構.
    下面是個例子:

    /* friends.c -- uses pointer to a structure */
    #include <stdio.h>
    #define LEN 20

    struct names {
    ??? char first[LEN];
    ??? char last[LEN];
    };

    struct guy {
    ??? struct names handle;
    ??? char favfood[LEN];
    ??? char job[LEN];
    ??? float income;
    };

    int main(void)
    {
    ??? struct guy fellow[2] = {
    ??????? {{ "Ewen", "Villard"},
    ???????? "grilled salmon",
    ???????? "personality coach",
    ???????? 58112.00
    ??????? },
    ??????? {{"Rodney", "Swillbelly"},
    ???????? "tripe",
    ???????? "tabloid editor",
    ???????? 232400.00
    ??????? }
    ??? };
    ??? struct guy * him;??? /* 聲明指向結構的指針,這個聲明不是建立一個新的結構,而是意味
                 著指針him現在可以指向任何現有的guy類型的結構*/
    ??
    ??? printf("address #1: %p #2: %p\n", &fellow[0], &fellow[1]);
    ??? him = &fellow[0];??? /* 告訴該指針它要指向的地址? */
    ??? printf("pointer #1: %p #2: %p\n", him, him + 1);
    ??? printf("him->income is $%.2f: (*him).income is $%.2f\n",
    ???????? him->income, (*him).income);
    ??? him++;?????????????? /*指向下一個結構*/
    ??? printf("him->favfood is %s:? him->handle.last is %s\n",
    ???????? him->favfood, him->handle.last);
    ???
    ??? return 0;
    }

    輸出結果:
    address #1: 0240FEB0 #2: 0240FF04
    pointer #1: 0240FEB0 #2: 0240FF04
    him->income is $58112.00: (*him).income is $58112.00
    him->favfood is tripe:? him->handle.last is Swillbelly
    Press any key to continue...


    ?

     從輸出看出 him 指向 fellow[0],him+1 指向 fellow[1] .注意 him 加上 1 ,地址就加了 84 .這是因為每個 guy 結構占用了 84 字節的內存區域.
     使用指針訪問成員的方法:

    1   him->income 但是不能 him.income ,因為 him 不是一個結構名.

    2  如果 him=&fellow[0], 那么 *him=fellow[0] .因為 & * 是一對互逆的運算符.因此,可以做以下替換:
    fellow[0].income= =(*him).income 注意這里必須要有圓括號,因為 . 運算符比 * 的優先級高.

    ?

    ?

    posted on 2006-11-09 19:12 matthew 閱讀(718) 評論(0)  編輯  收藏 所屬分類: 閱讀筆記
    主站蜘蛛池模板: 精品福利一区二区三区免费视频 | 91香蕉在线观看免费高清| 亚洲国产精品狼友中文久久久| 亚洲最大的成人网| 成人毛片18女人毛片免费视频未| 亚洲国产日韩在线一区| 曰批视频免费30分钟成人| 亚洲中文字幕AV每天更新| 日本不卡在线观看免费v| 色天使亚洲综合一区二区| 国产一级一片免费播放i| 老湿机一区午夜精品免费福利| 亚洲第一成人影院| 好吊色永久免费视频大全 | 亚洲欧洲国产精品你懂的| 99久久精品免费精品国产| 亚洲女人初试黑人巨高清| 日韩精品成人无码专区免费 | 免费看片A级毛片免费看| 日本亚洲高清乱码中文在线观看| 亚洲毛片不卡av在线播放一区| 国精产品一区一区三区免费视频| 亚洲视频免费一区| 精品无码国产污污污免费| 日本一区二区三区免费高清在线| 亚洲区小说区图片区QVOD| 亚洲视频在线免费播放| 亚洲av无码一区二区三区天堂 | 无码乱人伦一区二区亚洲| 成人免费视频网站www| 在线观看免费亚洲| 亚洲人成77777在线播放网站| 国产人成免费视频网站| 国产天堂亚洲国产碰碰| 人人狠狠综合久久亚洲婷婷| 噼里啪啦电影在线观看免费高清 | 亚洲人成图片小说网站| 67194成是人免费无码| 国产美女视频免费观看的网站| 亚洲欧洲综合在线| 亚洲人成网站18禁止一区|