C语言 字符数组和字符串

    字符数组,完整地说叫字符类型的数组,字符数组不一定是字符串。

    字符串是最后一个字符为NULL字符的字符数组。字符串一定是字符数组。

    字符数组的长度是固定的,其中的任何一个字符都可以为NULL字符。

    字符串只能以NULL结尾,其后的字符便不属于该字符串。

    strlen()等字符串函数对字符串完全适用,对不是字符串的字符数组不适用。


    下面来看一个例子

#include <stdio.h>
#include <string.h>

int main(void)
{
    //这是字符数组赋初值的方法
    char cArr[] = {'Q','U','A','N','X','U','E'};
    //这是字符串赋初值的方法
    char sArr[] = "quanxue";

    //用sizeof()求长度
    printf("cArr的长度=%d\n", sizeof(cArr));   //长度为7
    printf("sArr的长度=%d\n", sizeof(sArr));   //长度为8,最后一位是NULL

    //用printf的%s打印内容
    printf("cArr的内容=%s\n", cArr);   //不能正确显示
    printf("sArr的内容=%s\n", sArr);   //可以正确显示

    //用strlen()求长度
    printf("cArr的长度=%d\n", strlen(cArr));   //不正确的结果
    printf("sArr的长度=%d\n", strlen(sArr));   //NULL不在计算范围

    return 0;
}

    从上面的例子,我们可以看出有以下几点需要注意

一、char sArr[] = "quanxue";这种方式,编译时会自动在末尾增加一个NULL字符。

二、字符串只能以NULL字符结尾,NULL字符也就是'\0',在ASCII表中排在第一个,用16进制表示为0x00,用10进制表     示为0

三、sizeof()运算符求的是字符数组的长度(字符数组的长度时固定的),而不是字符串长度(字符串长度计算时不包括末     尾的NULL字符)。

四、strlen()函数求的是字符串长度,而不是字符数组。它不适用于字符串以外的类型。

五、char sArr[] = "quanxue";也可以写成char sArr[8] = "quanxue";(注意:是8而不是7)


字符数组与字符串数组之间的转化:

字符数组中插入一个NULL字符,NULL字符前面(包括NULL字符)就成了字符串,一般NULL字符插在有效字符的最后






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值