数组(二)(Day9)

一,*****字符串函数

1.字符串拷贝函数
char *strcpy(char *dest, const char *src);
功能:
    将src中字符串拷贝到dest中 

用法:
  strcpy(dest,src); //dest是一个字符数组的数组名
                 //src 可以是字符数组数组名
                 //或 字符串常量 
  
  eg:
  char dest[10];
  char src[10] = "hello";
  strcpy(dest,src); //src 数组名 
  strcpy(dest,"china"); //src是字符串常量  
  
  


2.字符串拼接 
char s1[20] = "hello";
char s2[20] = "world";

思路:
   1.找到 目的字符串中 '\0'位置
   2.复制 
   3.考虑 是否需要 添加'\0' 作为结束标志

strcat 
 char *strcat(char *dest, const char *src);
 功能:
    将src中的字符串拼接到dest中
 参数:
    @dest 拼接的目的字符串 
    @src 拼接的源字符串 

使用:
  char dest[100] = "world";
  char src[] = "hello";
  
  strcat(dest,src); //src是一个字符数组数组名
  strcat(dest,"hello");//src是一个字符串常量 
  
  
3.字符串的比较:

"hello"
"help"

字符串比较的规则与其他语言中的规则相同,
即:
对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),
直到出现不同的字符或遇到'\0'为止。
如全部字符相同,则认为相等;
若出现不相同的字符,则以第一个不相同的字符的比较结果为准。

"hello"
"help"

"hello" //遇到 '\0'
"hello" 

char s1[] = "hello";
char s2[] = "help";

实现功能:
while() //循环  //循环的条件 s1[i] == s2[i]  s1[i] !='\0' s2[i] != '\0'
{   
}
//停了之后
判断停止位置上的字符的大小关系

函数:
 strcmp 
 int strcmp(const char *s1, const char *s2);
 功能: 
     比较s1 和 s2 字符串的大小 
 参数:
    @s1  ---第一个字符串 
    @s2  ---第二个字符串 
 
返回值:
   > 0  s1 > s2
   < 0  s1 < s2 
   ==0  s1 == s2 
   
说明:
    这个函数,直接将最后停的位置上的字符 做了差 

不适用库函数,实现strcat 


二,二维数组(难点,但不是重点)
1.语法:
  类型说明符 数组名 [常量表达式][常量表达式]
  
  类型说明符  --- 就是表示数组中要存储的数据的类型 
  数组名      --- 起名字 符合 标识符 定义 的规则 
                 //数组名所代表的类型 --- 去掉名字后剩下就是对应的类型
                 //数组名所代表的值   --- 首元素的地址 
 [常量表达式] --- 两个常量表达式 表示的就是二维数组 
 
eg:
  int a[3]; //一维整型数组 ---表示定义了一个 有3个int型元素的 一维整型数组
  int a[3][4]; //二维整型数组 
  
  
2.理解二维数组:
//理解1 
int a[行数][列数]; 
int a[3][4]; //定义了 3行 4列 总共包含了12个int型变量的数组 

  

二维数组的本质:
二维数组,本质上,其实就是一维数组的一维数组 
c语言中,并不存在,真正的二维数组,本质上都是一维数组 

c语言对二维数组采用这样的定义方式,
使得二维数组可被看作是一种特殊的一维数组:
它的元素又是一个一维数组。
例如,
可以把a看作是一个一维数组,它有3个元素:
a[0] a[l] a[2],每个元素又是一个包含4个元素的一维数组

其实,a[0],a[1],a[3] 就是内部一维数组的数组名 


 int a[3][4];
 

 
 int a[3]; //一维整型数组 
           //a的数据类型 int[3]
           
 类型说明符 数组名[常量表达式];
 
 
 int[3]  a[4];//一维数组,这个一维数组的元素类型 int[3] 
              //含义上来说,就是一个二维数组
              //一维数组 的 一维数组 
 
 int  a[4][3]; //标准的c的语法 
 
 int a[2][3][4];
 int[3][4] a[2]; 
------------------
3.二维数组使用:
//初始化
 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};  //全部初始化
 int a[3][4] = {{1,2,3,4},{0},{9,10,11,12}}; //按行初始化
 int a[3][4] = {1,2}; //部分初始化 
 int a[3][4] ;//未初始化 默认随机值(垃圾值) 

//赋值的方式
int a[3][4];

for (i = 0; i < 3; ++i)
{
    for (j = 0;j < 4; ++j)
    {
     //a[i][j] = 表达式; //方式1 
     scanf("%d",&a[i][j]);
    }
}
 
4.注意:
   1.二维数组中,也可以是可变长数组
     int a[n][n]; //n可以是个变量 ,但是使用时,数组不能初始化
   2.二维数组中,可以省略行数,列数不能省略 
    int a[3][4];
    //3可以省略 4不能省略 
    int[4] a[]; //本质上省略的还是一维数组的长度 

二维字符型数组:

char s[3][4]; //3行 4列 的一个 char类型二维数组 
              //一个存放了 3个 char[4]这种类型的一维数组 

char s1[10] = "hello"; //char [10] 一维数组类型 
char s2[10] = "hello";
char s3[10] = "hello";
char s4[10] = "hello";
char s5[10] = "hello";

//理解的本质--但是c语言不支持这样的语法形式
char[10] str[5]; //一维数组 有5个 char[10] 这种类型的数据 

char str[5][10]; //

注意:
   1. 二维字符型数组, 主要用于存放 多个字符串 
   2.
    
char s[10];
gets(s);

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值