C/C++——字符串數組

C語言裏字符串數組應該怎麼定義?

字符指針

char *str[]="Hello World!";

char *str;
str = "Hello world"

理解:字符串指針變量自己是一個變量,用於存放字符串的首地址。而字符串自己是存放在以該首地址爲首的一塊連續的內存空間中並以 0 做爲串的結束。數組

  • *a只是指向一個字符
int main(void){  
    char *a= "bcd" ;  
    printf("輸出字符:%c \n", *a);  /*輸出字符,使用"%c"*/
    printf("輸出字符:%c \n", *(a+1) );  /*輸出字符,使用"%c"*/
    printf("輸出字符串:%s \n", a); /*輸出字符串,使用"%s";並且a以前不能有星號"*"  */
    system("pause");  
}

運行結果:app

輸出字符:b 
輸出字符:c 
輸出字符串:bcd
  • 若字符串常量出如今在表達式中,表明的值爲該字符串常量的第一個字符的地址

字符數組

char  str[]="Iamhappy";

理解:字符數組是由若干個數組元素組成的,它可用來存放整個字符串。(即用字符數組來存放字符串)。指針

  • 這種字符數組只能在字符數組初始化時使用,字符數組的賦值只能對其元素一一賦值。
char str[10]={'I','','a','m','','h','a','p','p','y'};

錯誤的賦值方式:code

char str[20];
str="Iamhappy";

總結

在C語言,有兩種方式表示和存放一個字符串內存

  • 用字符數組存放一個字符串
char str[]="I love u";

數組名就是字符串的首地址字符串

  • 用字符指針指向一個字符串
char *str="I love u";

指針變量就是字符串的首地址變量

兩種表示方式的字符串輸出都用:printf("%sn", str);
%s 表示輸出一個字符串,給出字符指針變量名 str(對於第一種表示方法,字符數組名便是字符數組的首地址,與第二種中的指針意義是一致的),則系統先輸出它所指向的一個字符數據,而後自動使 str 自動加 1,使之指向下一個字符...,如此,直到遇到字符串結束標識符 0 。

字符串指針數組

char *str[] = {"Hello", "C++", "World"}; //char (*str)[] = ...
 int i;
 for(i=0; i<3; i++)
    printf("%s\n", str[i]);
  • char *str[]:表示str是數組,數組中的元素是指針,指向char類型
  • str+1:表示str的第二個元素的內存地址,因此是加8字節
  • *(str+1):表示數組的第二個元素的內容 (是個char類型的指針,表示C++字符串的地址)
  • *(*(str+1)+2):表示數組的第二個元素的內容(char指針),指向的第三個字符(C++中的第二個+)
相關文章
相關標籤/搜索