C语言之字符串----5.27

  C语言中的字符串有两种表示方式,一是字符数组,二是字符指针。

  一、字符数组

  1.定义形式

  char 变量名[常量表达式];

  2.初始化形式

  有三种初始化形式

  ①.char c[5]={'a','b','c','d','e'};

  ②.char c[10]={"tasklist"};

  ③.char c[10]="tasklist"

  注意:·如果初始化初值个数大于数组长度会报错;若初值个数小于数组长度,系统会为剩余元素自动赋值为'\0'。

     ·两种初始化形式的不同

        例:char a1[5]={'a','b','c','d','e'};与char a2[]="abcde",

        初始化后数组中各元素值为:c1="abcde",c2="abcde\0"

  3.赋值方式

  char m1[20]="Hello",m2[20];

  strcpy(m2,m1);

  4.输入输出形式

  ①.输入形式

  char str[10];

  scanf("%s",str);或gets(str);

  ②.输出形式

  利用下标输出单个字符

  printf("%c",str[i]);

  直接输出整个字符串

  printf("%s",str);

  二、字符指针

  1.定义形式

  char *指针变量名;

  2.初始化形式

  ①.char *p;

      *p="tasklist";

  注意:字符数组无法像字符指针一样赋值,即:char a[10];  a[10]="ipconfig";是不成立的。

  3.赋值方式

  char *p1="Hello",p2; p2=p1;

  4.输入输出形式

  ①.输入形式

  用字符数组为存储空间

  char *p,str[10];

  *p=str;

  scanf("%s",p);

  用malloc为存储空间

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

  scanf("%s",p);

  注意:*p接受字符串输入时,必须先开辟存储空间

  ②.输出形式

  利用下标输出单个字符

  printf("%c",p+i);

  直接输出整个字符串

  printf("%s",p);

  三、字符数组与字符指针的区别

  三点区别:

  1. 存放内容不同。
  字符指针变量中存放的是字符串的首地址;
  字符数组存放的是若干个数组元素,每个元素对应一个字符
  2.赋初值的方式不同。
  字符指针初始化:
  char *s=“Hello”;等价于:char *s; s=“Hello”;
  字符数组初始化:static char m[10]=“Hello”;
  不可以为: static char m[10];m[]=“Hello”;
  3.赋值方式不同。
  字符数组(或字符串)之间不能进行赋值运算,如需赋值时只能单个字符为每个元素赋值或使用strcpy函数。如:
  static char m1[20]=“Hello” , m2[20]; strcpy(m2,m1);
  字符指针无此限制。如:
  char *s1=“Hello”, *s2; s2=s1;

posted @ 2015-05-28 16:27  ChCaty  阅读(202)  评论(0编辑  收藏  举报