字符串字符数组的赋值

时间:2024-11-12 14:27:25

  1. 字符数组的定义与初始化

Char str[10] = {a’,‘b’,‘c’,‘d’,‘e};

如果说提供的字符的个数大于数组的长度,就按语法错误处理,如果小于数组的长度,不够的位置用空字符补全’\0’

  1. 字符数组与字符串

    1)C语言中将字符串当做字符数组来处理字符串的结束标志是‘\0’,而前面的所有字符组成字符串,不算’\0’

    2)、对于字符串常量的话,系统会自动在字符串的结尾加’\0’,作为结束符,但是内存大小=字符的个数+1’\0’

备注:’\n’ACSS0的字符,ASCII0的字符是不可显示,它只是用来辨别字符串结尾的标志

实例:字符串数组的初始化

char str[] = {“abc def”};

char str[] = “abc def”;

但是上面的例子只能用于初始化一个字符数组,并不能用于赋值,像下面的例子就是一个错误:

         Char str[];

         Srt=”abc def”;

 所以字符数组只能对其元素一个一个赋值,除此之外字符串的大小是字符个数+1因为系统自动加’\0’

下面的例子与上面的初始化等价

Char str[] = {‘a’,’b’,’c’,’ ’,’d’,’e’,’f’,’\0’};

Char str[] = {‘a’,’b’,’c’,’’,’d’,’e’,’f’}的大小不同;

  1. 字符串的表示形式

    C语言中存放字符串的方式:

    1)、字符数组

    Charstr[] = “abc def”;

    2)、字符指针指向一个字符串

    Char*str = “abc def”;

    说明一下 str此时不是一个变量了,事实上它在内存的常量区,str指针指向该块内存,将字符串的首地址赋给srt

    字符串的输出方式

    printf(“%s\n”,str);这是给出了字符串的首地址,系统输出字符数据后,然后然后str自动+1指向下一个字符,直到遇到字符标志’\0’

  1. 字符串的赋值方式

    再此必须明确字符数组里放的是数组的成员,而字符指针只是放的指向字符串的首地址

    其次字符数组绝对不能赋值

    对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
         char str[14];
         str="I love you";    
    (但在字符数组初始化时可以,即char str[14]="I love you";

数组名是常量,故不能直接赋值,故只能用strcpy(因数组已提前分好内存了)
    
而对字符指针变量,采用下面方法赋值:
     char* a;
     a="I love you";

指针是变量,故可直接赋值,但不能用strcpy(因指针没有分配内存,除非提前分配好如上)

Char buf[10];

Char *str=buf;

Strcopy(str,”I love you”)