内容纲要

数组

存储一系列固定类型的数据。

定义

格式:

数据类型 数组名[常量表达式];

初始化

格式:

数据类型 数组名[常量表达式] = {数值,......};

也可省略常量表达式数组大小,大小为中数据的个数。

数据类型 数组名[] = {数值,......};

也可先定义,通过下标(从0开始)进行赋值。

数组名[下标] = 值;

访问数组

可通过数组下标索引进行访问

#include <stdio.h>

int main()
{
    int a[10]= {1,2,3,4,5,6,7,8,9,0}, i;

    for(i = 0;i < 10;i++)
        printf("%d",a[i]);
    return 0;
}

多维数组

c语言支持多维数组,最常用的为二维数组。

定义

格式:

数据类型 数组名[常量表达式1][常量表达式2];

常量表达式1代表一维下标的长度,常量表达式2代表二维下标长度

初始化

格式:

数据类型 数组名[常量表达式1][常量表达式2] = {数值,......};
数据类型 数组名[常量表达式1][常量表达式2] = {{数值,数值},{....}};

也第一维长度可省略

数据类型 数组名[][常量表达式2] = {数值,......};

也可先定义,通过下标(从0开始)进行赋值。

数组名[下标1][下标2] = 值;

访问数组

#include <stdio.h>

int main()
{
    int a[][3] = {{1,2,3},{4,5,6},{7,8,9}}, i, j;
    for(i = 0;i < 3;i++)
        for(j = 0;j < 3;j++)
            printf("a[%d][%d]=%d\n", i, j, a[i][j]);

    return 0;
}

字符数组

定义

格式:

char 数组名[元素个数];

字符数组也可以是多维的

初始化

格式:

char c[3] = {'1','b','='};

可以对部分元素进行定义,如果赋值元素小于定义大小,其他元素默认为'\0'。定义后如果不进行初始化,数组元素值不可预料。

对数组定义并初始化时也可省略数组的元素大小。

char c[] = {'1','b','='};

访问数组

字符串数组访问同其他数组一样通过下标进行访问。

printf("%d",a[1][0]);

字符串

c语言中,通常用一个字符数组来存储字符串,字符串在字符数组用\0`结尾。

定义

格式:

char c[] = "HelloWorld!";

在内存中实际存储要多一位,即\0结尾是由C语言编译自动增加。

字符串存储

输入函数

格式:gets(字符数组名)

#include <stdio.h>//必须使用stdio.h头文件

int main()
{
    char str[1024];
    gets(str);
    printf("%s",str);
}

输出函数

格式:puts(字符串数组名)

#include <stdio.h>//必须使用stdio.h头文件

int main()
{
    char str[1024];
    gets(str);
    puts(str);
}

常用处理函数

字符串处理函数都是由C语言string.h头文件提供的,在使用时用预处理命令包含此头文件。

  1. strcpy(s1, s2); 复制字符串 s2 到字符串 s1。 (覆盖s1中的内容)
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[10] = "1234", s2[10] = "4567";

    strcpy(s1,s2);

    puts(s1);
    puts(s2);
}

运行结果:

4567
4567
  1. strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[10] = "1234", s2[10] = "4567";

    strcat(s1,s2);

    puts(s1);
    puts(s2);
}

运行结果:

12344567
4567
  1. strlen(s1); 返回字符串 s1 的长度。
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[10] = "1234", s2[10] = "456789";
    int i, j;
    i = strlen(s1);
    j = strlen(s2);

    printf("s1'size=%d,s2'size=%d",i,j);
}

运行结果:

s1'size=4,s2'size=6
  1. strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[10] = "1234", s2[10] = "5678";

    int i = strcmp(s1,s2);

    printf("%d",i);
}

运行结果:

-1
  1. strchr(s1, ch); 返回一个char类型指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[10] = "1234", ch = '3';

    char *i;
    i = strchr(s1,ch);
    *i = 'c';

    printf("s1=%s",s1);
}

运行结果:

s1=12c4
  1. strstr(s1, s2); 返回一个char类型指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
#include <stdio.h>
#include <string.h>//必须使用此头文件

int main()
{
    char s1[] = "1234", s2[] = "23";

    char *i= strstr(s1,s2);

    puts(i);
    return 0;
}

运行结果:

234
最后修改日期:2020年11月28日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。