数组及字符串

数组


一维数组

特点:同一数组中的所有元素都属于同一种数据类型,数组元素用数组名和相应的下标来确定。

定义格式:类型名 数组名[常量表达式];

注意:

  • C语言每个数组在内存中分配空间时是连续分配的。
  • 定义数组时方括号中的表达式不能含有变量,表达式的值必须要大于零且为正整数。

引用格式:数组名[下标]

注意:

  • 不能整体用只能单独引用其中的元素。引用时的下标可以是表达式。
  • 数组的下标在(0—N-1)

初始化格式:类型名 数组名[常量表达式]={初值1,初值2,...};

注意:

  • 多则出错,少则补0.
  • 定义赋初值的个数等于数组长度,则数组长度可以省略。
  • 一个都不给则是随机值。
  • 只能在定义数组的同时用{ }给数组元素整体赋值

二维数组

定义格式:类型名 数组名 [行数-常量表达式][列数-常量表达式2]

注意:

  • 定义数组时方括号中的表达式不能含有变量,表达式的值必须要大于零且为正整数。
  • 在内存中二位数组的存放也是连续的,先行后列原则。

引用:数组名[行下标][列下标]

注意:

  • 不能整体用,只能引用其中的元素。
  • 引用时必须有行下标和列下标两个下标,从0开始依次加1

初始化:

  1. 将初值依序放在一对{ }中,与一维初始化格式相同
  2. 定义二维数组的同时,按行初始化每一行初值均用一对{ }括起,采用嵌套的{ }格式。

注意:

定义数组的同时给数组初始化,则可以省略行数,但列数不能省略。


字符数组

C语言中没有字符串变量,如何存储?

  1. 字符数组来存放
  2. 字符型指针变量

初始化:与其他数组的初始化方式一样,只是其初始值是字符。

字符串:因为字符串最后都有一个字符串结束符(‘\0’),所以用字符数组来存放字符串时一定要有一个元素存放结束符‘\0’

注意:

  • 字符串常量后有一个‘\0’
  • 用字符串给一字符数组初始化有三种情况:
  1. char a[ ]="abcd"; (双引号加'\0')
  2. char a[ ]={"abcd"};
  3. char a[ ]={'a','b','c','c','d','\0'}'(单引号需要自己加‘\0’)

字符串存储(赋值)四种方法

方法1:scanf();键盘输入

char a[10];  scanf("%s",a); 数组名本身就是地址

                    scanf("%s",&a);  非法

注:用%s格式输入时,遇到空格符或回车符则自动结束输入

       scanf(“%s,%s”,a,b)不能正确读取数据

               printf()输出

注意:输出时则从当前地址开始知道遇到结束符‘\0’为止

方法2:gets()键盘输入

格式:#include<stdio.h>

            gets(字符数组)

功能:读取一个字符串赋给字符数组

注:

(1)用该函数输入字符时,只有遇到回车符系统才结束读取字符

(2)不论是用%s还是gets()在输入时均不需要输入双引号,若输入时用了双引号则双引号也作为字符串的有效字符。

puts()输出

格式:#include<stdio.h>

            puts(字符数组或字符串常量)

功能:在屏幕上输出字符数组中的字符

注:用该函数输出与%s格式输出一样,只是该函数将‘\0’转成‘\n’输出

方法3:初始化

方法4:strcpy()


字符串处理函数

strcat()

格式:#include<string.h>

strcat(字符数组1,字符数组2);

功能:连接

返回的是第一个数组的首地址

strcpy()拷贝

格式:#include<string.h>

            strcpy(字符数组1,字符数组2)

功能:将字符数组2中的字符串替换到字符数组1中,函数值为字符数组1的首地址。

strcmp()比较

格式:#include<string.h>

            strcmp(字符数组1,字符数组2)

功能:函数返回值相同位置。不同字符的ASCLL码差值

strcmp(“abc”,“abfc”);=>-3

注:不能用关系运算符直接进行字符串大小或字符数组大小的比较

strlen()

格式:#include<string.h>

             strlen(字符数组)

功能:求出字符数组的实际长度(不包括结束符)

猜你喜欢

转载自blog.csdn.net/weixin_42734520/article/details/81176543