码迷,mamicode.com
首页 > 其他好文 > 详细

C零基础视频-27-字符串

时间:2019-10-17 23:20:25      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:帮助   字符串的比较   零基础   大小   取出   返回   char*   asc   一段   

什么是字符串

之前我们已经学过单个字符的文字型数据(char)。同时了解过字符串。
在C语言中,字符串用双引号包围。

#include <stdio.h>

int main(int argc, char* argv[])
{
    printf("Hello");
    return 0;
}

字符串不是C语言中的基本数据类型。在我们之后的学习中可以看到,它是根据约定存储多个char数据的一种方式。

C语言中的字符串

为了方便研究,我们将以上代码进行修改:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    printf("%s", szHello);
    return 0;
}

实际上,当我们定义

"Hello"

时,编译器帮助我们做了以下几件事情:

  • 根据"Hello"的字符串长度,分配一段char类型的空间
  • 将"Hello"中的字符一个一个复制到以上的空间中
  • 在以上空间的末尾添加数字0作为结束标志
  • 将字符串的首地址返回(char*类型)
#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    printf("Hello字符串的空间大小: %d\r\n", sizeof("Hello"));
    printf("Hello字符串的首地址: %08X\r\n", szHello);
    return 0;
}

我们甚至可以结合数组的知识,将字符串空间对应的char数据,一个个取出来,并输出:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    int i = 0;
    for (; i < sizeof("Hello"); i++)
    {
        printf("%d: ASCII数值:%d, 对应字符:%c\r\n", 
            i, szHello[i], szHello[i]);
    }
    return 0;
}

注意:C语言中规定以数字0作为字符串的结尾。

字符数组与字符串的比较

因为字符串中的每一个元素都是char类型,所以与字符数组有相似的地方。比如:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    char chAry[] = "Hello";

    printf("%s, %s\r\n", szHello, chAry);
    return 0;
}

但实际上是有区别的:

#include <stdio.h>

int main(int argc, char* argv[])
{
    char* szHello = "Hello";
    char chAry[] = "Hello";

    chAry[0] = 'j';
    printf("%s\r\n", chAry);

    szHello[0] = 'j';
    printf("%s\r\n", chAry);
    return 0;
}

简而言之:

  • 字符数组可读可写
  • 字符串可读不可写

C零基础视频-27-字符串

标签:帮助   字符串的比较   零基础   大小   取出   返回   char*   asc   一段   

原文地址:https://www.cnblogs.com/shellmad/p/11695543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!