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

一、指針函數
    
當一個函數聲明其返回值為一個指針時,實際上就是返回一個地址給調用函數,以用于需要指針或地址的表達式中。
    
格式:
         
類型說明符 * 函數名(參數)
    
當然了,由于返回的是一個地址,所以類型說明符一般都是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 艾凡赫 閱讀(4175) 評論(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>
            亚洲国产精品综合| 欧美一区二区三区免费观看| 农村妇女精品| 久久亚洲精品视频| 91久久线看在观草草青青| 亚洲日韩成人| 国产精品一区二区三区观看| 另类春色校园亚洲| 欧美国产精品中文字幕| 亚洲夜晚福利在线观看| 亚洲欧美日韩中文播放| 亚洲福利视频在线| 在线观看视频一区二区| ●精品国产综合乱码久久久久| 免费国产自线拍一欧美视频| 欧美淫片网站| 亚洲私人黄色宅男| 亚洲国产91| 亚洲视频在线观看| 亚洲激情电影中文字幕| 亚洲午夜在线观看| 在线成人激情| 这里是久久伊人| 亚洲福利电影| 亚洲一区二区视频| 一区在线播放| 亚洲伦理网站| 在线观看国产日韩| 99re66热这里只有精品4| 韩国av一区二区三区四区| 亚洲人体大胆视频| 精品99一区二区| 亚洲一区免费| 亚洲毛片在线观看.| 欧美一区二区在线看| 国产精品99久久99久久久二8 | 在线观看欧美一区| 亚洲综合视频1区| 一本色道精品久久一区二区三区| 欧美一二三视频| 亚洲一区二区高清视频| 欧美高清在线一区| 久久久亚洲欧洲日产国码αv| 欧美日韩成人一区二区三区| 免费国产一区二区| 狠狠色狠狠色综合日日91app| 亚洲一二三区在线| 一区二区av在线| 欧美激情片在线观看| 久久婷婷亚洲| 国产亚洲欧美另类中文| 亚洲一区欧美二区| 亚洲永久视频| 国产精品久久999| 日韩视频免费在线观看| 99re6这里只有精品| 欧美成人精品在线观看| 你懂的视频欧美| 亚洲高清视频在线| 另类尿喷潮videofree| 噜噜噜91成人网| 一色屋精品亚洲香蕉网站| 性色一区二区| 欧美一区影院| 亚洲欧美日韩一区二区在线| 欧美母乳在线| 一区二区日本视频| 亚洲欧美日韩在线播放| 国产日韩在线一区二区三区| 午夜免费久久久久| 久久综合图片| 亚洲欧洲日本专区| 欧美日韩123| 亚洲午夜伦理| 久久精品亚洲乱码伦伦中文 | 亚洲毛片在线免费观看| 欧美日韩调教| 亚洲欧美日韩国产中文| 久久久国产亚洲精品| 伊人成人在线| 欧美日本网站| 亚洲丝袜av一区| 久久久水蜜桃av免费网站| 亚洲国产精品久久久久婷婷老年| 欧美成人免费全部观看天天性色| 亚洲精品在线视频| 久久国产精品久久w女人spa| 伊人夜夜躁av伊人久久| 欧美日本中文字幕| 欧美一级大片在线观看| 亚洲国产精品成人| 午夜精彩视频在线观看不卡 | 亚洲国产欧美在线人成| 欧美日本国产一区| 午夜在线播放视频欧美| 亚洲夫妻自拍| 久久av一区二区三区| 亚洲激情校园春色| 国产精品无码专区在线观看 | 久久人人爽人人爽| 亚洲国产天堂久久综合网| 欧美视频在线观看免费| 久久久999| 亚洲视频电影图片偷拍一区| 另类天堂视频在线观看| 亚洲欧美美女| 亚洲人成在线观看网站高清| 国产伦精品一区二区三区免费| 老**午夜毛片一区二区三区| 亚洲直播在线一区| 亚洲高清在线视频| 久久久综合免费视频| 亚洲自拍偷拍一区| 日韩视频一区二区三区在线播放免费观看| 国产精品乱码妇女bbbb| 免费成人高清| 久久九九久精品国产免费直播| 中文在线资源观看网站视频免费不卡 | 久久久久久香蕉网| 亚洲免费网站| 亚洲精品综合精品自拍| 狂野欧美性猛交xxxx巴西| 亚洲欧美在线x视频| 夜夜狂射影院欧美极品| 亚洲第一页自拍| 一区二区亚洲| 国产真实久久| 国产日本欧美在线观看 | 欧美一级一区| 亚洲男人影院| 亚洲网站视频| 一本色道久久综合狠狠躁的推荐| 亚洲国产高清一区| 欧美大片在线观看| 蜜臀a∨国产成人精品| 久久久久女教师免费一区| 午夜精彩视频在线观看不卡 | 美日韩精品视频| 久久精品免费| 久久久久久久网| 久久九九有精品国产23| 久久国产精品一区二区| 欧美中文在线字幕| 性做久久久久久免费观看欧美| 亚洲欧美日韩国产一区| 亚洲一区在线免费观看| 亚洲在线视频| 欧美在线免费观看| 久久久久久午夜| 玖玖精品视频| 欧美福利在线| 亚洲精品国久久99热| 日韩亚洲精品在线| 亚洲午夜电影网| 午夜精品免费| 久久人人爽爽爽人久久久| 蜜桃av久久久亚洲精品| 欧美激情第10页| 欧美日韩一区在线观看视频| 国产精品久久久一区麻豆最新章节 | 欧美高清视频一二三区| 亚洲人在线视频| 欧美无乱码久久久免费午夜一区 | 美女日韩在线中文字幕| 欧美大片免费观看| 欧美日韩一区二| 国产美女精品在线| 亚洲第一精品久久忘忧草社区| 亚洲黄色av| 午夜精品久久久久久久99热浪潮| 午夜视频在线观看一区二区三区| 久久天堂成人| 欧美成人三级在线| 亚洲精品在线一区二区| 性色一区二区三区| 久久夜色精品国产亚洲aⅴ| 裸体一区二区| 在线亚洲欧美视频| 看片网站欧美日韩| 日韩午夜在线播放| 久久天天躁狠狠躁夜夜爽蜜月| 欧美日韩日本国产亚洲在线| 国产主播精品在线| 亚洲视频一区二区| 老司机午夜精品视频| 亚洲乱码日产精品bd| 久久精品成人| 国产精品久久久久久超碰| 精品999在线观看| 亚洲一区二区三区四区五区午夜| 免费视频久久| 欧美一区三区二区在线观看| 欧美~级网站不卡| 国产一区美女| 亚洲免费在线视频| 亚洲破处大片| 狼狼综合久久久久综合网| 国产精品乱人伦一区二区 | 欧美日韩午夜在线| 亚洲欧洲一级|