【DAY6】C语言基础:字符数组(字符串)与二维整型数组精讲
一、一维字符型数组
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.字符串的打印
| 函数 | 示例 | |
| printf | printf("%s\n",str); | 打印字符串第一个字符到最近的一个'\0' |
| puts | puts(str); |
7.字符串的接收
| 函数 | 示例 | |
| scanf | scanf("%s", str); | scanf函数只有对%s ,不加& |
| gets | get(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}};
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.二维数组的本质
二维数组是:一维数组的数组

更多推荐

所有评论(0)