c語言字串的初始化

2020-10-01 15:00:11

預習C語言字串語法的一點點總結:

  c語言字串的兩種形式及其初始化

         ·字元陣列(定義時就初始化是個好習慣,否則可能會有bug的驚喜)

            第一種初始化       char ch[6]={'h','e','l','l','o'} ,也可以寫成char ch[]={'h','e','l','l','o'} ,最後一個位置預設儲存0即'\0',用作判定字串結束,這個很細節,需要注意

             第二種初始化         char ch[6]="hello";這種寫法是不是很舒服,有點string型別的味道了,實際上與第一種是一樣的。

            第三種初始化       char ch[6]="";程式會為首地址為ch的字串分配6個空間,但是記憶體中都是空('\0'),同上,實際上使用者只有5個空間,最後一位必須是'\0'

           第四種初始化     char ch[6]={0};第一個字元賦值為空,以後的每個字元賦值為空,與第三種初始化類似。

          錯誤操作示範:char ch[6]="12345";

                                  char a[6];

                                  ch=a;//陣列首地址是常數,不可被更改賦值,建議使用指標 

注:字元陣列的讀取與修改具有天然優勢,大部分情況下還是建議使用字元陣列啦。

       ·字元指標 

          第一種:char *ch;直接定義,不去賦值也沒事,不像陣列定義的時候一定要分配空間。

          第二種:char  *ch=NULL;如果有強迫症,非要賦值的話,可以這麼幹,或者char *ch="1233453";

          第三種: char b[6]="hello";

                       char *ch;

                       ch=b;

                      將b字串首地址賦值給ch,也很簡單。

        第四種:char *ch=(char *)malloc(sizeof(char)*6);//分配6個字元空間的地址,首地址賦值給ch。有點字元陣列的味道了。這種初始化看似很雞肋,但是如果你想使用gets(ch),就必須事先為它分配空間啦。

注:如果你並不知道你需要讀取的字串是多大,並且似乎並沒有太多的存取操作,貌似事先分配一個很大或者很小的陣列都不妥當,那您不妨使用字元指標啦。