一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

字符串?dāng)?shù)組初始化 - 有緣人共聚一堂 - 博客園

 liukai007 2009-05-20

字符串?dāng)?shù)組初始化

(1)char arr[10]="HI";
初始化字符串?dāng)?shù)組時(shí),編譯器自動(dòng)將字符串最后一個(gè)字符后面加上'\0',以表示字符串的結(jié)束。
如果數(shù)組的大小大于字符串的長(zhǎng)度+1,那么把字符串結(jié)束后面的元素也都初始化為'\0';
看這段程序:
定義一個(gè)大小為12的字符串?dāng)?shù)組
char str1[12]="jiajia";        
讓一個(gè)char型的指針指向這個(gè)數(shù)組
    char *p1=str1;
輸出這個(gè)字符串
    printf("%s\n\n",str1);
利用指針輸出這個(gè)字符串?dāng)?shù)組中每個(gè)元素的字符、字符ascii值、字符存儲(chǔ)地址
    for(int i=0;i<12;i++)
    {
        printf("%c:%d:%p\n",*p1,*p1,p1);
        p1++;
    }
可以看出,數(shù)組元素的后幾位都被初始化成了'\0';使用printf打印字符串?dāng)?shù)組時(shí),程序遇到第一個(gè)'\0'就結(jié)束對(duì)字符串的讀取。

如果數(shù)組的大小小于字符串的長(zhǎng)度+1,程序在運(yùn)行時(shí)可能要出現(xiàn)問(wèn)題,所以應(yīng)當(dāng)確保數(shù)組的大小要大于字符串長(zhǎng)度的大小+1;

這段程序的字符串長(zhǎng)度+1小于數(shù)組的大?。?br>char str2[12]="hello jiajia";
    char *p2=str2;

    printf("\n\n\n%s\n\n",str2);
   
    for(int i=0;i<28;i++)
    {
        printf("%c:%d:%p\n",*p2,*p2,p2);
        p2++;
    }

使用printf打印字符串,程序需要找到'\0'才能結(jié)束讀取,結(jié)果找遍整個(gè)數(shù)組沒(méi)有找到,只有繼續(xù)順著地址尋找,一直找到某個(gè)地址上的assii是0的,字符串才讀取完畢。所以本段程序在讀取完"hello jiajia"之后,后面可能還會(huì)有幾個(gè)隨機(jī)的字符,就是因?yàn)樽址K止于'\0'。

(2)char arr[]="Hello World!";
這種初始化方法不用擔(dān)心數(shù)組大小過(guò)小的情況,數(shù)組的大小由編譯器決定。
(3)char arr[]={'H','e','e','l','o',' ','W','o','r','l','d','\0'};
同第二種方法結(jié)果相同,但顯然要麻煩許多。另外,' '代表空格,ascii值是32,'\0'代表字符串結(jié)束,ascii值是0;
(4)char *p="Hello World";
使用數(shù)組的方式初始化。同數(shù)組不同之處在于,p是一個(gè)變量,可以做遞增、遞減運(yùn)算,而arr是數(shù)組的首地址,是一個(gè)地址常量,不能做遞增、遞減運(yùn)算。

char *name="liujiajia";
    name[0]='L';
    printf("\n%s\n",name);
name[0]='L';這句代碼在最新的c99標(biāo)準(zhǔn)中會(huì)引發(fā)程序異常。需要注意。


char *string="c programe";
    char *string2;    
    string2=string;    //將指針string的值賦給string2
    
    printf("\nstring=%s,&string=%p,string=%p\n",string,&string,string);
    printf("\nstring=%s,&string=%p,string=%p\n",string2,&string2,string2);

上面這段程序最后顯示,指針string所指向的地址和指針string2所指向的地址相同,這就說(shuō)明它們指向的是內(nèi)存里面同一個(gè)字符串,也就是說(shuō)字符串本身并沒(méi)有復(fù)制,而是產(chǎn)生了一個(gè)指向同一個(gè)字符串的指針。這樣程序的效率會(huì)更加的高。如果需要復(fù)制字符串可以使用 strcpy() 或 strncpy()。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    人体偷拍一区二区三区| 久久热在线视频免费观看| 深夜视频在线观看免费你懂| 久久精品国产亚洲av久按摩| 欧美日韩国产的另类视频| 欧美成人黄色一区二区三区| 国产毛片av一区二区三区小说| 办公室丝袜高跟秘书国产| 亚洲av日韩一区二区三区四区| 中文字幕av诱惑一区二区| 日韩午夜老司机免费视频| 欧美大黄片在线免费观看| 国产亚洲欧美一区二区| 我想看亚洲一级黄色录像| 亚洲欧美国产中文色妇| 国产主播精品福利午夜二区| 欧美国产精品区一区二区三区| 一区二区三区四区亚洲另类| 精品国产亚洲免费91| 91亚洲国产成人久久| 亚洲一区在线观看蜜桃| 国产亚州欧美一区二区| 日本人妻的诱惑在线观看| 日韩免费午夜福利视频| 亚洲成人精品免费在线观看| 日本中文字幕在线精品| 国产精品久久熟女吞精| 午夜精品国产一区在线观看| 大香伊蕉欧美一区二区三区| 大香蕉网国产在线观看av| 高潮日韩福利在线观看| 国产极品粉嫩尤物一区二区| 激情图日韩精品中文字幕| 激情少妇一区二区三区| 粉嫩一区二区三区粉嫩视频| 日韩在线视频精品中文字幕| 色婷婷久久五月中文字幕| 亚洲人午夜精品射精日韩 | 国产欧美日产中文一区| 性欧美唯美尤物另类视频| 国产熟女高清一区二区|