• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

C学习-基础:数组 - 字符数组 字符串

数组的概念

数组属于构造数据类型中的一种;数组是有序数据的集合。数组中的每一个元素都具有相同的数据类型,用一个统一的数组名不同的下标来唯一地确定数组中的元素。

  • 有序性:数组中的所有元素都有自身的序号0,1,2…

  • 相同类型:全部是整数、浮点数、字符型

数组的分类

  • 一维数组

  • 二维数组

  • 字符数组

字符数组

char  数组名[常量表达式];

字符数组的每—个元素可以当作一个字符型变量使用

字符数组初始化

  • 逐个给数组中的各元素赋初值

char str [10]= {‘C’,’h’,’i’,’n’,’e’,’s’,’e’,‘\0’};
  • 当对全部元素赋初值时,可省去长度说明。

char c[ ]={‘C’,’h’,’i’,’n’,’a’};    //这时数组c的长度,系统自动定为5。
  • 也可以对二维字符数组进行初始化

char str[2][5]={ {‘C’,’h','i','n','a'},{'J',‘a','p','a','n'}};
  • 字符串直接给字符数组赋初值,实际应用中,这种方法更常用

char str [10]="Chinese";  // 这里必须 双引号,单引号 错误

注意:用字符串直接给字符数组赋初值,赋值后系统会自动加上字符串结束标志‘\0’字符数组长度比输入的字符串长度大1

字符数组的引用

与其他类型数组的引用形式一样(for 循环),但字符数组的每个元素都是一个字符。

字符串 和 字符数组 关系

  • C语言中,字符串借助字符数组来存放的,以字符‘\0’作为 字符串结束标志。‘\0’是一个转义字符,称为“空操作符”,ASCII代码值为0。‘\0’作为标志占用存储空间,但不计入串的实际长度。 

  • 通常在字符串常量末尾,系统会自动加一个‘\0’作为结束符。因此用字符串常量字符数组初始化时,数组长度至少要比字符串实际长度大1。 

字符数组的输入输出

  • 用格式说明符“%c”实现逐个字符输入输出
例如:
#include <stdio.h>
int main(int argc, char const *argv[])
{
    int waitag;
    int i;
    char str[10] = {"Chinese"};
    for (i = 0; i < 10; i++)
        printf("%c", str[i]);
    scanf("%d", &waitag);
    return 0;
}

执行以上语句,输出结果:

image.png

  • 用格式说明符“%s”进行整串输入和输出
 在scanf函数中使用格式说明“%s”可以实现字符串的整体输入
char st[10];
scanf("%s",st);

注意:

  • 不能在数组名st前加求地址运算符'&';st是数组名,代表该数组的首地址。

  • 将从str[0]开始依次将输入的字符串放入到数组st中,在最后一个字母之后由系统自动加'\0'

printf函数中使用格式说明“%s”可以实现字符串的整体输出

char str[10];
scanf("%s",str);
printf("%s",st);

注意:

  • 此处st是数组名,代表该数组的首地址。执行函数时,从该地址开始,依次输出存储单元中的字符直到遇到第一个'\0' 为止

  • '\0' 是结束标志不在输出字符之列。输出结束后不自动换行



0
0
下一篇:C学习-函数:字符串处理函数 puts gets strcat strcpy strcmp ...

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。