字符串:以0结束的字符数组。

注意这里的0是数字0而不是字符0,其ASCII码值为48

char s[5] = {'A', 'B', 'C', 'D', 'E'};//字符数组

char s[5] = {'A', 'B', 'C', 'D', '0'};//字符数组

char s[5] = {'A', 'B', 'C', 'D', 0};//字符串

char s[5] = "ABCD";   //字符串,与上一行完全等价

字符串常量是""所括起来的,其最后一定存在一个看不见的\0作为结束标志

对于字符串的处理,必须遇\0就止

char s[6] = "abcdef";//语法错误,存储长度超过数组的长度

char s[] = "abcd0123\0XYZ\0\0";

printf("%d %d\n", sizeof(s), strlen(s));

上述的输出结果:sizeof(s)是15,strlen(s)是8

由上可知,字符串遇到\0就截止了,其后长度未被计算进去

总结:

sizeof()的用法

sizeof()是一个运算符,不是一个函数,它有以下三种用法:

  1. sizeof(数据类型名称),测的结果是数据类型所占的字节数


2.sizeof(变量名称或者数组名称),测得结果是变量或者数组所申请的空间

char a;  sizeof(a)==>1

short a;  sizeof(a)==>2

int a[20]; sizeof(a)==>80

3.sizeof(字符串名称),测得结果是字符串的长度+1(所加的一字节就是结束表示\0)

strlen()的用法:

strlen()是专门测量字符串长度的函数,使用前需要在函数前加上

#include<string.h>这个头函数,它测得结果不包括\0这个字符串长度

字符串程序设计实例:

从键盘输入一串字符,要求逐字符逐行输出,例如:输入abcd,则输出为

a

b

c

d

程序:

char shit[80];

int i;

scanf("%s", shit);//%s使用时,对应为数组的数组名字,不用加取地址符号&

            //这种做法输入时候不能有空格,遇到空格即输入结束

for(i = 0; shit[i];i++)//数组的最后一个字符为0

    printf("%c\n", shit[i]);