• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 指向指針的指針實例

    發表于:2007-05-25來源:作者:點擊數: 標簽:指向想在指針我們實例
    我們想在函數pro()中改變指針p的值(記?。菏侵羔榩的值,而不是p所指向的地址的值)。能實現嗎?結果是不能,為什么?我們來分析一下 先看一個例子: #include stdio.h char buf[10] = hello; void pro(char *out) { out = buf; } main() { char *p = NULL;
    我們想在函數pro()中改變指針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所指向的地址的值)。能實現嗎?
         結果是不能,為什么?我們來分析一下。

         如果不用函數pro(),我們可以直接在主函數中用 p = buf 來實現。如果使用函數pro(),就變得稍微復雜了。
         因為我們要在函數pro()中改變指針p的值,而函數pro()又沒有返回值,如何記住這個改變呢?
         我們可以先用簡單的例子說明:

         #include <stdio.h>

         void pro(char *out)
         {
             out[1] = 'o';
         }

         main()
         {
             char *p = "hello";
             pro(p);
             printf("%s\n", 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);
         }

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>