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

寶杉的博客

UNIX/LINUX;ACE;SNMP;C++
posts - 33, comments - 23, trackbacks - 0, articles - 0

指針與數組

Posted on 2007-08-03 13:08 寶杉 閱讀(208) 評論(0)  編輯 收藏 引用 所屬分類: C++

數組要么在靜態存儲區被創建(如全局數組),要么在棧上被創建。數組名對應著(而不是指向)一塊內存,其地址與容量在生命期內保持不變,只有數組的內容可以改變。

指針可以隨時指向任意類型的內存塊,它的特征是“可變”,所以我們常用指針來操作動態內存。指針遠比數組靈活,但也更危險。

1 修改內容

       char a[] = "hello";

       a[0] = 'X';

       cout << a << endl;

       char *p = "world";     // 注意p指向常量字符串

       p[0] = 'X';                 // 編譯器不能發現該錯誤

       cout << p << endl;


2 復制與比較

strcpy(new type[strlen(a)+1]),而不能用p = a    //把a的地址給了p,而不是a的內容

strcmp(if strcmp(a,p)== 0),而不能用      if( a = p)  

       // 數組…

       char a[] = "hello";

       char b[10];

       strcpy(b, a);                 // 不能用       b = a;

       if(strcmp(b, a) == 0)     // 不能用  if (b == a)

       // 指針…

       int len = strlen(a);

       char *p = (char *)malloc(sizeof(char)*(len+1));

       strcpy(p,a);                  // 不要用 p = a;

       if(strcmp(p, a) == 0)     // 不要用 if (p == a)

sizeof內存容量計算

1           sizeof(p)相當于sizeof(char*),C++不支持對指針所指內容容量的計算。

char a[] = "hello world";

    char *p  = a;

    cout<< sizeof(a) << endl;   // 12字節

    cout<< sizeof(p) << endl;   // 4字節

2           數組作為函數參數,退化成同類型指針。

void Func(char a[100])

    {

        cout<< sizeof(a) << endl;   // 4字節而不是100字節

}

指針參數傳遞內存

首先,考慮函數為參數創建臨時副本的問題。對于值傳遞,有形參和實參的區別。但對于引用和指針傳遞,則可能會產生問題。

 

指針作為函數參數,不能動態申請內存。

void GetMemory(char *p, int num)

{

       p = (char *)malloc(sizeof(char) * num);

}

void Test(void)

{

       char *str = NULL;

       GetMemory(str, 100);           // str 仍然為 NULL     

       strcpy(str, "hello");               // 運行錯誤

}

毛病出在函數GetMemory中。編譯器總是要為函數的每個參數制作臨時副本,指針參數p的副本是 _p,編譯器使 _p = p。如果函數體內的程序修改了_p的內容,就導致參數p的內容作相應的修改。這就是指針可以用作輸出參數的原因。在本例中,_p申請了新的內存,只是把_p所指的內存地址改變了,但是p絲毫未變。所以函數GetMemory并不能輸出任何東西。事實上,每執行一次GetMemory就會泄露一塊內存,因為沒有用free釋放內存。

如何改正:

1 用“指向指針的指針”

void GetMemory2(char **p, int num)          //**p

{

       *p = (char *)malloc(sizeof(char) * num);

}

void Test2(void)

{

       char *str = NULL;

       GetMemory2(&str, 100);                    // 注意參數是 &str,而不是str

       strcpy(str, "hello");

       cout<< str << endl;

       free(str);

}

2 用函數返回值來傳遞動態內存

char *GetMemory3(int num)

{

       char *p = (char *)malloc(sizeof(char) * num);

       return p;

}

void Test3(void)

{

       char *str = NULL;

       str = GetMemory3(100);      

       strcpy(str, "hello");

       cout<< str << endl;

       free(str);

}

注意

強調不要用return語句返回指向“棧內存”的指針

char *GetString(void)

{

       char p[] = "hello world";

       return p;  // 編譯器將提出警告

}

void Test4(void)

{

char *str = NULL;

str = GetString();   // str 的內容是垃圾

cout<< str << endl;

}

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久亚洲私人国产精品va媚药 | 亚洲美女一区| 一区二区av在线| 欧美成人一区二区| 亚洲精品视频啊美女在线直播| 久久丁香综合五月国产三级网站| 欧美人成在线视频| 久久久99免费视频| 亚洲免费精品| 欧美亚一区二区| 亚洲欧美日韩在线| 美女主播一区| 欧美多人爱爱视频网站| 久久精品水蜜桃av综合天堂| 久久久久久久综合色一本| 午夜在线精品| 久久精品免视看| 欧美激情精品久久久久久免费印度 | 亚洲激情校园春色| 精品动漫3d一区二区三区| 欧美一区二区啪啪| 欧美激情亚洲视频| 亚洲黄色天堂| 亚洲最新在线| av成人毛片| 欧美一区二区三区久久精品| 欧美一区二区三区在线视频| 欧美在线观看一区| 欧美国产一区二区| 一区二区三区欧美激情| 性欧美1819性猛交| 久久久人成影片一区二区三区观看| 久久国产日本精品| 欧美日韩高清区| 国产精品女人毛片| 欧美视频在线观看| 国产婷婷一区二区| 在线精品国产欧美| 亚洲欧美成人一区二区在线电影| 久久不见久久见免费视频1| 欧美成人精品高清在线播放| 国产精品乱码妇女bbbb| 亚洲自拍偷拍色片视频| 麻豆精品视频在线观看| 欧美日韩一区综合| 欧美在线看片| 国产精品二区三区四区| 韩日欧美一区二区| 午夜精品999| 老鸭窝91久久精品色噜噜导演| 一区二区三区四区精品| 欧美一区观看| 亚洲精品九九| 老牛影视一区二区三区| 国产九色精品成人porny| 精品1区2区| 亚洲欧美区自拍先锋| 国产精品毛片| 国产精品99久久久久久久久| 亚洲图片你懂的| 亚洲精品国精品久久99热| 亚洲夜间福利| 久久久.com| 亚洲电影中文字幕| 一本色道久久加勒比88综合| 久久国产婷婷国产香蕉| 欧美性大战久久久久久久| 亚洲国产二区| 巨胸喷奶水www久久久免费动漫| 鲁大师成人一区二区三区| 亚洲毛片在线观看| 欧美大胆a视频| 欧美日韩亚洲综合在线| 亚洲无线视频| 亚洲精品乱码久久久久久黑人 | 亚洲在线不卡| 欧美精品久久久久久久免费观看 | 欧美激情aaaa| 欧美精品在线播放| 亚洲国产成人精品视频| 亚洲国产成人在线播放| 亚洲欧洲在线看| 久久欧美肥婆一二区| 久久久久久久久久久一区 | 亚洲影院免费观看| 国产美女在线精品免费观看| 一区二区免费在线播放| 99国产精品一区| 久久福利资源站| 欧美乱妇高清无乱码| 亚洲精品一级| 亚洲一区二区精品在线| 日韩一区二区福利| 蜜桃av综合| 国产精品自拍网站| 久久av最新网址| 午夜在线精品偷拍| 国内揄拍国内精品久久| 欧美91福利在线观看| 亚洲激情校园春色| 欧美日本一区二区视频在线观看| 日韩一级黄色大片| 亚洲欧美日韩国产综合| 国产亚洲成av人在线观看导航| 欧美在线免费一级片| 亚洲国产日韩一区| 亚洲欧美中文日韩v在线观看| 午夜精品剧场| 美女精品在线| 夜夜精品视频| 亚洲在线成人| 亚洲人成网站999久久久综合| 亚洲无毛电影| 亚洲精品永久免费| 国产精品久久久久99| 久久er精品视频| 久久一区二区三区国产精品 | 欧美成人免费在线| 一本久道久久综合中文字幕| 亚洲第一视频| 国产精品久久久久aaaa| 欧美激情一区二区三区成人| 亚洲一区二区三区精品视频| 一本久道久久综合婷婷鲸鱼| 国内精品久久久久久| 猫咪成人在线观看| 久久aⅴ国产欧美74aaa| 亚洲日本激情| 亚洲国产精品传媒在线观看 | 久久久久**毛片大全| 欧美美女日韩| 久久精品视频一| 亚洲成色777777在线观看影院| 可以看av的网站久久看| 欧美日韩影院| 欧美sm视频| 欧美日韩国产探花| 久久成人精品一区二区三区| 久久激情综合| 亚洲欧美日韩精品一区二区| 久久天堂av综合合色| 欧美亚洲三级| 噜噜爱69成人精品| 美女久久一区| 国产日韩欧美在线看| 日韩视频免费观看| 狂野欧美激情性xxxx欧美| 久久一区二区三区av| 午夜精品美女自拍福到在线| 久久久在线视频| 久久一区欧美| 国产精品国产三级国产aⅴ浪潮| 欧美亚洲一区在线| 欧美日韩亚洲91| 91久久精品国产91性色tv| 亚洲电影成人| 久久久久成人精品免费播放动漫| 一本到12不卡视频在线dvd | 亚洲国产视频一区| 国产伦精品一区二区三| 一区二区三区视频在线观看 | 亚洲欧美日韩在线播放| 久久阴道视频| 国产精品女主播| 亚洲一本大道在线| 免费在线看成人av| 欧美尤物一区| 国产精品久久久爽爽爽麻豆色哟哟| 国产一区二区在线免费观看| 一二三区精品| 久久夜色精品国产噜噜av| 亚洲国产国产亚洲一二三| 欧美专区一区二区三区| 亚洲大片在线观看| 亚洲午夜精品一区二区三区他趣| 国产精品毛片a∨一区二区三区| 欧美阿v一级看视频| 欧美日韩色婷婷| 国产精品色婷婷| 亚洲欧美国产高清va在线播| 亚洲欧美综合网| 中文在线资源观看网站视频免费不卡 | 亚洲影院在线| 亚洲一区国产精品| 激情成人综合网| 性娇小13――14欧美| 91久久精品一区| 欧美sm视频| 亚洲一区二区三区国产| 欧美激情久久久久久| 国产精品系列在线| 91久久国产自产拍夜夜嗨| 亚洲国产精品久久久久婷婷老年 | 欧美日韩一区不卡| 免费欧美日韩| 欧美一区二区黄| 亚洲欧美日韩一区二区三区在线观看 | 午夜精品久久久久久99热软件 | 亚洲欧美日韩专区| 国产精品女人久久久久久|