青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

一、指針函數
    
當一個函數聲明其返回值為一個指針時,實際上就是返回一個地址給調用函數,以用于需要指針或地址的表達式中。
    
格式:
         
類型說明符 * 函數名(參數)
    
當然了,由于返回的是一個地址,所以類型說明符一般都是int。
    
例如:int *GetDate();
          int * aaa(int,int);
    
函數返回的是一個地址值,經常使用在返回數組的某一元素地址上。

        int * GetDate(int wk,int dy);

        main()
        {
            int wk,dy;
            do
            {
                printf("Enter week(1-5)day(1-7)\n");
                scanf("%d%d",&wk,&dy);
            }
            while(wk<1||wk>5||dy<1||dy>7);
            printf("%d\n",*GetDate(wk,dy));
        }

        int * GetDate(int wk,int dy)
        {
            static int calendar[5][7]=
            {
               {1,2,3,4,5,6,7},
               {8,9,10,11,12,13,14},
               {15,16,17,18,19,20,21},
               {22,23,24,25,26,27,28},
               {29,30,31,-1}
            };
            return &calendar[wk-1][dy-1];
        }
        
程序應該是很好理解的,子函數返回的是數組某元素的地址。輸出的是這個地址里的值。

二、函數指針
    
指向函數的指針包含了函數的地址,可以通過它來調用函數。聲明格式如下:
        
類型說明符 (*函數名)(參數)
    
其實這里不能稱為函數名,應該叫做指針的變量名。這個特殊的指針指向一個返回整型值的函數。指針的聲明筆削和它指向函數的聲明保持一致。
        
指針名和指針運算符外面的括號改變了默認的運算符優先級。如果沒有圓括號,就變成了一個返回整型指針的函數的原型聲明。
    
例如:
        void (*fptr)();
    
把函數的地址賦值給函數指針,可以采用下面兩種形式:
        fptr=&Function;
        fptr=Function;
    
取地址運算符&不是必需的,因為單單一個函數標識符就標號表示了它的地址,如果是函數調用,還必須包含一個圓括號括起來的參數表。
    
可以采用如下兩種方式來通過指針調用函數:
        x=(*fptr)();
        x=fptr();
    
第二種格式看上去和函數調用無異。但是有些程序員傾向于使用第一種格式,因為它明確指出是通過指針而非函數名來調用函數的。下面舉一個例子:

        void (*funcp)();
        void FileFunc(),EditFunc();

        main()
        {
            funcp=FileFunc;
            (*funcp)();
            funcp=EditFunc;
            (*funcp)();
        }

        void FileFunc()
        {
            printf("FileFunc\n");
        }

        void EditFunc()
        {
            printf("EditFunc\n");
        }

        
程序輸出為:
            FileFunc
            EditFunc

三、指針的指針
    
指針的指針看上去有些令人費解。它們的聲明有兩個星號。例如:
        char ** cp;
    
如果有三個星號,那就是指針的指針的指針,四個星號就是指針的指針的指針的指針,依次類推。當你熟悉了簡單的例子以后,就可以應付復雜的情況了。當然,實際程序中,一般也只用到二級指針,三個星號不常見,更別說四個星號了。
    
指針的指針需要用到指針的地址。
        char c='A';
        char *p=&c;
        char **cp=&p;
    
通過指針的指針,不僅可以訪問它指向的指針,還可以訪問它指向的指針所指向的數據。下面就是幾個這樣的例子:
        char *p1=*cp;
        char c1=**cp;
    
你可能想知道這樣的結構有什么用。利用指針的指針可以允許被調用函數修改局部指針變量和處理指針數組。

        void FindCredit(int **);

        main()
        {
            int vals[]={7,6,5,-4,3,2,1,0};
            int *fp=vals;
            FindCredit(&fp);
            printf("%d\n",*fp);
        }

        void FindCredit(int ** fpp)
        {
            while(**fpp!=0)
            if(**fpp<0) break;
            else (*fpp)++;
        }

    
首先用一個數組的地址初始化指針fp,然后把該指針的地址作為實參傳遞給函數FindCredit()。FindCredit()函數通過表達式**fpp間接地得到數組中的數據。為遍歷數組以找到一個負值,FindCredit()函數進行自增運算的對象是調用者的指向數組的指針,而不是它自己的指向調用者指針的指針。語句(*fpp)++就是對形參指針指向的指針進行自增運算的。但是因為*運算符高于++運算符,所以圓括號在這里是必須的,如果沒有圓括號,那么++運算符將作用于二重指針fpp上。

四、指向指針數組的指針
    
指針的指針另一用法舊處理指針數組。有些程序員喜歡用指針數組來代替多維數組,一個常見的用法就是處理字符串。

        char *Names[]=
        {
             "Bill",
             "Sam",
             "Jim",
             "Paul",
             "Charles",
             0
        };

        main()
        {
            char **nm=Names;
            while(*nm!=0) printf("%s\n",*nm++);
        }

    
先用字符型指針數組Names的地址來初始化指針nm。每次printf()的調用都首先傳遞指針nm指向的字符型指針,然后對nm進行自增運算使其指向數組的下一個元素(還是指針)。注意完成上述認為的語法為*nm++,它首先取得指針指向的內容,然后使指針自增。
    
注意數組中的最后一個元素被初始化為0while循環以次來判斷是否到了數組末尾。具有零值的指針常常被用做循環數組的終止符。程序員稱零值指針為空指針(NULL)。采用空指針作為終止符,在樹種增刪元素時,就不必改動遍歷數組的代碼,因為此時數組仍然以空指針作為結束。
Posted on 2005-11-03 11:26 艾凡赫 閱讀(4178) 評論(0)  編輯 收藏 引用 所屬分類: 數據類型
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合伊人77777麻豆| 国产精品呻吟| 一本色道久久| 亚洲欧美日本国产有色| 一本久道久久综合婷婷鲸鱼| 亚洲精品国久久99热| 亚洲免费精彩视频| 一区二区三区毛片| 亚洲午夜精品在线| 久久超碰97中文字幕| 麻豆国产精品777777在线| 免费欧美日韩| 亚洲精品黄网在线观看| 亚洲国产欧美国产综合一区 | 亚洲在线1234| 欧美一级午夜免费电影| 久久久久久婷| 久久久夜色精品亚洲| 欧美激情亚洲另类| 一卡二卡3卡四卡高清精品视频| 亚洲小说春色综合另类电影| 小嫩嫩精品导航| 麻豆成人av| 国产精品久久一级| 国内精品视频666| 亚洲国产毛片完整版 | 国产精品入口夜色视频大尺度| 韩日精品视频| 中国日韩欧美久久久久久久久| 久久久91精品国产一区二区精品| 亚洲国产精品ⅴa在线观看| 亚洲性线免费观看视频成熟| 国产精品自拍网站| 亚洲手机在线| 久久午夜激情| 国产精品一区毛片| 日韩视频在线观看| 国产精品麻豆va在线播放| 国产丝袜一区二区| 一区二区三区免费看| 久久综合九色综合欧美就去吻 | 欧美精品久久久久久久久老牛影院| 欧美午夜片在线免费观看| 亚洲大片av| 久久久久久久97| 夜夜嗨av一区二区三区| 美女主播一区| 国产一区日韩一区| 午夜精品久久久久久久99樱桃 | 久久九九精品99国产精品| 欧美淫片网站| 亚洲日韩欧美视频| 裸体歌舞表演一区二区| 国内自拍视频一区二区三区| 亚洲女同精品视频| 亚洲免费精彩视频| 欧美v国产在线一区二区三区| 国产视频一区欧美| 午夜一区二区三区不卡视频| 一区二区激情小说| 欧美小视频在线| 中文国产成人精品久久一| 欧美黄网免费在线观看| 久久理论片午夜琪琪电影网| 国产婷婷成人久久av免费高清 | 国产婷婷精品| 亚洲欧美日韩爽爽影院| 99re在线精品| 欧美日韩妖精视频| 亚洲午夜电影| 中文在线不卡| 国产麻豆精品theporn| 亚洲欧美日韩成人| 亚洲欧美大片| 韩国三级电影一区二区| 麻豆国产精品一区二区三区 | 日韩午夜精品| 欧美精品九九| 亚洲一区二区毛片| 亚洲欧美日韩精品久久久久| 国产亚洲欧洲| 免费在线国产精品| 免费看亚洲片| 日韩视频免费| 亚洲网址在线| 久久精彩免费视频| 国产一区视频观看| 欧美大片91| 欧美激情一区二区三区在线| 一本色道久久88综合亚洲精品ⅰ | 99视频一区二区| 国产精品国产三级国产专播品爱网| 亚洲欧美视频在线观看| 亚洲欧美在线一区二区| 精品动漫一区二区| 亚洲精品乱码| 国产精品一国产精品k频道56| 久久久www成人免费无遮挡大片| 久久婷婷蜜乳一本欲蜜臀| 日韩亚洲欧美一区| 午夜精品福利在线观看| 亚洲人体偷拍| 午夜精品一区二区三区在线播放| 狠狠爱成人网| 一道本一区二区| 亚洲国产精品传媒在线观看| 亚洲午夜女主播在线直播| 激情欧美一区| 亚洲视频精选| 亚洲日本理论电影| 亚洲欧美制服另类日韩| 一本色道久久88精品综合| 久久精品五月| 亚洲女女女同性video| 久久夜色精品国产亚洲aⅴ| 亚洲欧美日韩综合aⅴ视频| 免费日韩一区二区| 久久精品亚洲一区二区| 欧美激情在线狂野欧美精品| 麻豆精品网站| 国产网站欧美日韩免费精品在线观看| 91久久精品日日躁夜夜躁欧美 | 亚洲成人在线视频播放| 国产一区二区三区无遮挡| 亚洲欧洲在线视频| 亚洲经典自拍| 久久午夜视频| 久久在线视频在线| 国产亚洲精品一区二555| 亚洲最新在线| 欧美69视频| 另类尿喷潮videofree| 国产日产欧美一区| 亚洲网站在线观看| 午夜精品偷拍| 国产精品v亚洲精品v日韩精品| 亚洲人成网站色ww在线| 亚洲精品日本| 欧美顶级艳妇交换群宴| 欧美岛国激情| 在线观看欧美黄色| 欧美一级电影久久| 久久琪琪电影院| 黄色欧美成人| 久久成人综合网| 尤物视频一区二区| 久久久久久穴| 欧美成年人在线观看| 亚洲国产一二三| 欧美成人伊人久久综合网| 欧美激情视频一区二区三区免费| 在线观看精品| 欧美激情一区在线观看| 一区二区三区免费网站| 亚洲女人天堂成人av在线| 国产欧美一区二区三区沐欲 | 欧美日韩精品系列| 一区二区三区四区五区视频| 午夜精品三级视频福利| 韩国福利一区| 欧美福利一区| 一区二区日韩精品| 久久精品国产2020观看福利| 一区一区视频| 欧美日韩国产片| 亚洲一区三区电影在线观看| 久久久99免费视频| 亚洲黄色影院| 欧美日韩精品一区二区| 欧美一区二区视频网站| 亚洲国产精品美女| 亚洲男女自偷自拍图片另类| 好看的亚洲午夜视频在线| 欧美激情一区在线| 久久www成人_看片免费不卡| 亚洲黄网站在线观看| 欧美成人免费观看| 亚洲综合电影| 亚洲国产天堂久久综合网| 午夜视频在线观看一区二区三区| 激情文学综合丁香| 国产精品二区三区四区| 久久久久一区| 一本色道**综合亚洲精品蜜桃冫| 久久综合电影| 亚洲欧美国产高清| 亚洲人成网站色ww在线| 国产女优一区| 欧美日韩精品一本二本三本| 老司机久久99久久精品播放免费| 亚洲视频精选在线| 亚洲国产mv| 久久亚洲综合网| 激情六月婷婷久久| 国产精品久久久久免费a∨| 欧美jizz19hd性欧美| 久久精品成人一区二区三区| 99这里有精品| 亚洲日本理论电影| 欧美大片免费久久精品三p |