字符串(一)

本文目标:

    讨论一下C语言中的字符串。(头文件 string.h 包含了使用 c语言字符串 函数 所需要的原型和声明)

基本概念:

    字符串是一种重要的数据类型,但是C语言并没有显式的字符串数据类型,因为字符串以字符串常量的形式出现或者存储于字符数组中。

    字符串是一串零个或多个字符,并且以一位模式为全0的 NUL 字节结尾。

示例:

1     char  szStr0[] = "Oogway";  /// 将一个 字符串 赋值给一个数组
2     char  szStr1[7] = "Oogway";
3     char  szStr2[10] = "Oogway";
4     char  szStr3[6] = "Oogway";   / 不合法的赋值操作,因为"Oogway"占7个字节空间,而字符数组szStr3只分配了6个字符空间。
5     char szStr4[7] = { 'O', 'o', 'g', 'w', 'a', 'y', '\0' };
6     char szStr5[6] = { 'O', 'o', 'g', 'w', 'a', 'y' };  /只是一个字符数组,不是一个字符串。因为它没有字符结束标志。

 以szStr2 为例来说明

sizeof(szStr2) 结果为 10

strlen(szStr2) 结果为 6

szStr2中"Oogway"字符串占用了 7 个字节的空间;

回顾一下:

1.一个长度为N个字节的字符串赋给数组的时候,需要为它准备N+1个字节的内存空间;

2.字符串存储于数组中时,必须以 '\0'结尾('\0' 就是 将那一位 赋值为 0)。为什么要重点强调这点,是因为 实际工作中,经常遇到 没有以'\0'结尾的情况,导致得到的字符数组越界。这种bug出现的频率还是蛮高的。(为什么会有没有以'\0'结尾的情况?这种问题,大多出现在 memcpy或者 sprintf , strcpy 的时候,后面的关于“字符串”的文章会讨论这几个函数)

3.strlen计算数组长度的时候,没有计算 末尾的 '\0' 字符;例如,szStr2的 字符串长度是 6

4.字符串所占用的内存空间是 字符串长度+1 ,例如 "Oogway"字符串长度是6,但必须给它分配 7 个字节的空间,才能装的下这个字符串。szStr2拥有10个字节的内存空间,能装得下这个字符数组。

 

转载于:https://www.cnblogs.com/MasterOogway/p/5778554.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值