字符串?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); |
|
來(lái)自: liukai007 > 《c51學(xué)習(xí)》