為什麼有指向指標的指標?

來源:互聯網
上載者:User

採用指向指標的指標操作,一般用於在函數內部來改變採用指標方式傳進函數的主函數的指什的指向   
    
  我們想在函數pro()中改變指標p的值(記住:是指標p的值,而不是p所指向的地址的值)。能實現嗎?結果是不能,為什嗎?我們來分析一下  
   
  先看一個例子:  
             
            #include   <stdio.h>  
            char   buf[10]   =   "hello";  
   
            void   pro(char   *out)  
            {  
                    out   =   buf;  
            }  
   
            main()  
            {  
                    char   *p   =   NULL;  
                     
                    pro(p);  
                    printf("%s/n",   p);  
            }  
   
            我們想在函數pro()中改變指標p的值(記住:是指標p的值,而不是p所指向的地址的值)。能實現嗎?  
            結果是不能,為什嗎?我們來分析一下。   
    
                        
            這個例子是改變了字串指標p所指向的字串的指,它能記住這個改變是因為在函數中是對指標所指向的地址  
            空間進行操作。你明白了嗎?也就是說,函數的參數是char   *out,我們可以改變   *out,但改變不了out本身。  
            所以針對第一個例子,我們要想改變p,必須把&p當作參數傳給函數pro()。修改後的例子如下:  
   
     
            #include   <stdio.h>  
            char   buf[10]   =   "hello";  
   
            void   pro(char   **out)  
            {  
                    *out   =   buf;  
            }  
   
            main()  
            {  
                    char   *p   =   NULL;  
                     
                    pro(&p);  
                    printf("%s/n",   p);  
            }   
 

補充:

int a = 3, *p;
*p = a ;//error
這個是錯誤的,原因就是:
p是一個為初始化的一個 隨機指標,對一個沒有初始化的指標進行*運算,這個是取值運算,這個都是錯誤的,根本就不能對這樣的指標做任何操作,嚴重的有可能p指向了作業系統的一快記憶體,對他進行操作,系統都有可能 掛掉的

一般的,這樣用
int a= 3,*p;
p=&a; //a是已經分配了記憶體的一個int變數,對它進行取地址&運算,在給指標p進行初始化,

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.