一、一维字符型数组

1.概念:

C语言中用来存放字符串

2.定义:

数据类型 数组名[元素个数];

示例:char str [32];

注意:

1.元素个数 >= 字符串的字符个数;

2.元素个数必须为常量;

3.注意'\0' ;"hello"有6个字符

3.元素访问

数组名 [元素下标];

示例:str [0]; str[n]; str[1+n];

元素下标:0 ~ 元素个数-1

4.字符数组的初始化

1)全部初始化

char str [6] = {'h', 'e' ,' l ' , ' l ' , 'o',' \n '};

char str [6] = {“hello”};

char str [6] ="hello" ;

2)局部初始化

char str[6] = {'h' , 'e', ' l ' };

char str[6] = {"hel"};

char str[6] = "hel";

//没给定初值的元素的ASCII码值为0,也就是'\0'

char str[6] = {0};        //将数组清0

3)默认初始化

char str[] = {"hello'};        //一般不用默认初始化

问:以下字符串有几个字符?

        char str[ ] = {"ab\0"};        //   " " 包括一个隐藏的' \0 '

        

        故有 4 个字符

5.字符型数组的存储

字符型数组占空间大小 = 数组元素个数

1.连续性:存放数据空间连续

2.有序性:存放数据的顺序是有序的

6.字符串的打印

函数示例
printfprintf("%s\n",str);打印字符串第一个字符到最近的一个'\0'
putsputs(str);

7.字符串的接收

函数示例
scanfscanf("%s", str);scanf函数只有对%s ,不加&
getsget(str)

8.字符串常用函数

使用以下函数需要加头文件:#include <srting.h>

1)strlen

功能:获得字符串长度(从字符串开头到、0中间元素的个数,不包含0)

示例:

char str[ 32] = {"hello"};

int len = 0;

len = strlen(str);

对比:

sizeof(str):获得st在内存中所占的字节数

strlen(str):获得str字符串的长度

有了字符串长度就可以操作字符串的倒置,让我们用C语言来实现:

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

int main(void)
{
    int i = 0;
    char tmp = 0;
    int len = 0;
    char str[32] = {0};

    gets(str);
    len = strlen(str);

    for(i = 0; i < len - 1; i++)
    {
        tmp = str[i];
        str[i] = str[len - 1 - i];
        str[len - 1 -i] = tmp;
    }
      
     puts(str);  
    
     return 0;
}
2)strcpy

功能:将源字符串拷贝到目的空间

例:

char str[32] = {0};

char dst[32] = {0};

strcpy (str,'"hello world");

strcpy (dst  ,  str);

                 <--

3)strcat

功能:将第二个字符串拼接到第一个字符串末尾

char str[32] = {"hello"};

strcat (str  ,  "world");

                <-- 

4)strcmp

功能:比较两个字符串是否相同,相同返回0
           如果第一个字符串 > 第二个字符串返回  > 0  的值
           如果第一个字符串 < 第二个字符串返回  < 0  的值

比较两个字符串大小:

        从左到右,依次比较两个字符串对应位置的字符的ASCII码值的大小,谁的ASCII码值大谁就大。

二、二维整型数组

1.定义

数据类型 数组名 [行个数] [列个数];

2.元素访问

数组名 [行下标] [列下标];

3.元素初始化

1)全部初始化

int a[2][3] = {{1, 2, 3}, {4, 5, 6}};

                        \wedge

               a[0][ ] 行的3个数
int a[2][3] = {1, 2, 3, 4, 5, 6}

2)局部初始化

int a[2][3] = {{1, 2}, {3}};
int a[2][3] = {1, 2, 3};
int a[2][3] = {0};
int a[2][3] = {{0}};

3)默认初始化

int a[][3] = {1, 2, 3, 4, 5, 6};
int a[][3] = {{1, 2}, {3}};
int a[][3] = {1, 2, 3, 4}

//二维数组默认初始化:行能省略,列不能省略

4)C语言实现:接收终端的字符并打印
#include<stdio.h>
int main(void)
{
    int i = 0;
    int j = 0;
    int a[2][3] = {0};

    for(j = 0; j < 2; j++)
    {
        for(i = 0; i < 3; i++)
        {
            scanf("%d",&a[j][i]);
        }
    }

    for(j = 0; j < 2; j++)
    {
        for(i = 0; i < 3; i++)
        {
            printf("a[%d][%d] = %d",j, i, a[j][i]);
        }
    }

    return 0;
}

4.二维数组的储存

1. 连续性:数组空间连续,数组大小 == 元素类型所占空间大小 * 行数 * 列数

2. 有序性:逐行从左到右依次存储

5.二维数组的本质

二维数组是:一维数组的数组

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐