Day10学习记录

#c语言知识

多维数组

(以三维数组为例)

1.定义:数据类型 数组名[层][行][列]

2.大小:层数*行数*列数*sizeof(数据类型)

Day10学习记录_第1张图片

定义的时候 arr[][3][4]亦可 (离数组名最近的2可省略)

字符数组和字符串

  1. 定义:字符——char ch=’a’;字符数组——char arr[5]={};

字符串——char *arr=’’hello’’/char arr[]=’’hello’’ 即 char arr[] = { 'h','e','l','l','o' ,’\0’};

(字符串结束标志为\0)数字0等同于\0,但是不等同于0

前者ASCII码值为0,后者为48。

Day10学习记录_第2张图片

Day10学习记录_第3张图片

Day10学习记录_第4张图片

 

 

2.定义字符数组存储字符串

Day10学习记录_第5张图片

输入helloworld会报错,因为越界了。注意scanf遇到空格和换行就会结束。

3.字符串拼接

Day10学习记录_第6张图片

替换了有效字符串但缺少了\0

Day10学习记录_第7张图片

ch3[i+j]=0是字符串结束符

4.字符数组和字符串的区别

(1)c语言中没有字符串这种数据类型,可通过char的数组来替代。

(2)字符串一定是一个char的数组,但char的数组未必是字符串。

(3)数字0(和字符’\0’等价)结尾的char数组就是一个字符串,但如果char数组没有以数字0结尾,那么就不是一个字符串,只是普通字符数组,所以字符串是一种特殊的char的数组

Day10学习记录_第8张图片

Day10学习记录_第9张图片

可通过调整占位符控制数据大小,从而解决越界问题。

5.字符串的输入输出

(1)gets()

*gets(str)与scanf(“%s”,str)的区别:

前者允许输入的字符串含有空格;后者不允许。

*由于scanf()和gets()无法知道字符串s大小,必须遇到换行符或读到文件结尾为止才接收输入,因此容易导致字符数组越界(缓冲区溢出)的情况。(定义的时候大一些)

Day10学习记录_第10张图片

Day10学习记录_第11张图片

通过正则表达式也可以用scanf(格式化输入)获取带空格字符串。

(2)fgets()

在读取输入的字符串的时候,同时把用户输入的回车也作为字符串的一部分。通过scanf和gets_s输入一个字符串的时候,不包含结尾的”\n”,但通过fgets结尾多了”\n”。fgets()函数是安全的,不存在缓冲区溢出的问题。

Day10学习记录_第12张图片

*也可以接收空格

*获取字符串少于元素个数会有\n,大于等于时没有\n。

(3)puts()        自带换行  puts(“”);(换行)

Day10学习记录_第13张图片

(4)fputs()

Day10学习记录_第14张图片

(5)strlen()计算有效字符长度 导头文件 string.h

Day10学习记录_第15张图片

Day10学习记录_第16张图片

函数

1.函数的作用:

(1)函数让程序更加模块化,从而有利于程序的阅读、修改和完善。

(2)省去重复代码的编写,降低代码重复率,避免冗余。

2.函数的分类:

(1)系统函数(库函数),由编译系统提供,无需自定义。

(2)用户定义函数。

3.函数的调用:产生随机数

4.调用时的五要素:

(1)头文件:包含指定的头文件。

(2)函数名字:函数名字必须和头文件声明的名字一样。

(3)功能:需要知道此函数什么功能之后才调用。

(4)参数:参数类型要匹配。

(5)返回值:根据需要接收返回值。

Day10学习记录_第17张图片

买彩票双色球

Day10学习记录_第18张图片

你可能感兴趣的:(学习)