数组做形式参数的时候真正的形式参数是一个指针
如果在函数中不会修改指针形参所捆绑的存储区则
应该在指针形参前加const关键字
任何存储区的地址都可以作为实际参数和指针形参
配合使用
使用指针形式参数可以让被调用函数使用其他函数的
存储区
无类型指针的一个主要用途就是作为函数的形式参数
使用
指针也可以作为函数的返回值使用,这种使用方法
可以间接把多个数据通过返回值传递给调用函数
为了避免出现野指针绝不可以把局部变量或者块变量
的地址赋值给指针类型的返回值存储区
C语言中所有文字信息都是用字符串表示的
字符串是由内存中一组连续的字符类型存储区构成的
字符串中使用'\0'字符表示有效字符的结束位置,这个
字符的ASCII码就是数字0
所有字符串一定可以采用和第一个字符类型存储区捆绑的
字符指针表示
字符串又可以分成两类,每类又有自己专门的表示方式
第一类可以使用字符串字面值的方式表示,例如"abc",
"^&&*^*"等
编译器会自动在字符串字面值后面加'\0'字符
字符串字面值表示的字符串被存储在一个专门的段落里,
这个段落在程序运行的时候不可以被修改
同样内容的字符串字面值在程序运行过程中只会有一份
编译器会自动用第一个字符类型存储区的地址替换字符串
字面值
如果把两个字符串字面值合并在一起则编译器会自动把
它们合并成一个
字符数组也可以用来表示字符串
只要字符数组中包含'\0'字符就可以当字符串用
如果想把一个字符数组当字符串使用就必须在程序
中向字符数组中放'\0'字符
可以在程序中使用字符串字面值对字符数组做初始化
使用字符串字面值对字符数组初始化完成后它们之间
就没有关系了
字符数组里的字符串在程序运行过程中是可以被修改的
不可以使用操作符直接对字符串进行操作
C语言中提供了一组专门的标准函数,这些标准函数
可以用来对字符串做各种处理
为了使用这些标准函数需要包含string.h文件内容
strlen 这个函数可以计算字符串中
有效字符的个数
strcat 这个函数可以把一个字符串的
内容合并到一个字符数组中原有
字符串的末尾
字符数组最终会记录合并后的字符串
这个函数用返回值表示合并后的
字符串
这个函数有可能修改不属于这个数组
的存储区,因此它是有危险的
strncat 这个函数的功能和strcat类似
它比strcat函数多一个整数类型的
参数,这个参数表示最多可以从
后一个字符串中合并多少个字符
内容到字符数组中
如果使用得当这个函数可以避免
危险
(man 函数名 该语句可以查看函数的详细信息)
strcmp 这个函数可以比较两个字符串
是否一样
它把两个字符串对应位置上的字符
进行ASCII码的比较
ASCII码大的字符所在的字符串就
叫大
这个函数通过返回值表示比较结果,
如果前一个字符串大则返回1,如果
后一个字符串大则返回-1,如果一样
大则返回0
strncmp 这个函数也可以比较两个字符串的
大小,它比较的是前n个字符
它比strcmp多了一个整数类型的
参数,这个参数表示要比较的
字符个数
strcpy 这个函数可以把一个字符串复制到
一个字符数组中
这个函数的返回值可以表示复制得到
的新字符串
strncpy 这个函数只会把后一个字符串中的
前n个字符复制到字符数组中
这样可以避免发生错误
可以使用%s作为占位符把一个字符串打印在屏幕上
可以使用%s做占位符在scanf语句中从键盘得到一个
字符串并记录在一个字符数组中
和%s占位符对应的数据应该是数组名称,不需要再取
地址了
使用这种方式从键盘获得字符串可能遇到两个问题:
1.如果输入内容中包含空格字符则只能获得空格字符
前的内容
2.如果输入内容多于数组中存储区个数则会出现严重
错误
fgets函数可以从任何文件中获得字符串
在Linux系统中键盘可以被当作文件看待,这个文件叫
标准输入文件,用stdin表示
fgets函数需要三个参数
1.字符数组的名称(得到的字符串记录在这个数组中)
2.数组中包含的字符类型存储区个数
3.要读取的文件(stdin表示键盘)
这个函数有可能把输入时的回车字符也读入到字符
数组中
scanf("%*[^\n]");
scanf("%*c");
在得到字符串以后要清理可能存在的垃圾数据(输入的字符过多就会有垃圾)
只有当字符数组中没有'\n'字符的时候才需要清理
垃圾数据
预习:
1.多个字符串的存储方式
2.指针数组和二级指针
3.文件操作相关函数
作业:
1.编写函数实现strcat函数的功能
2.编写程序把用户在键盘上输入的表达式结果
计算出来并打印在屏幕上
(假设用户输入的表达式格式一定正确,
表达式中只包含加减符号,所有数字都是
整数,没有空格,第一个数字一定是正数,
计算过程中出现的所有数字都没有超过
整数类型的范围)
3.编写模拟登录程序
正确的用户名是admin
正确的密码是123456
给用户三次机会
如果三次都失败则提示登录 ,否则提示登录成功
如果在函数中不会修改指针形参所捆绑的存储区则
应该在指针形参前加const关键字
任何存储区的地址都可以作为实际参数和指针形参
配合使用
使用指针形式参数可以让被调用函数使用其他函数的
存储区
无类型指针的一个主要用途就是作为函数的形式参数
使用
指针也可以作为函数的返回值使用,这种使用方法
可以间接把多个数据通过返回值传递给调用函数
为了避免出现野指针绝不可以把局部变量或者块变量
的地址赋值给指针类型的返回值存储区
C语言中所有文字信息都是用字符串表示的
字符串是由内存中一组连续的字符类型存储区构成的
字符串中使用'\0'字符表示有效字符的结束位置,这个
字符的ASCII码就是数字0
所有字符串一定可以采用和第一个字符类型存储区捆绑的
字符指针表示
字符串又可以分成两类,每类又有自己专门的表示方式
第一类可以使用字符串字面值的方式表示,例如"abc",
"^&&*^*"等
编译器会自动在字符串字面值后面加'\0'字符
字符串字面值表示的字符串被存储在一个专门的段落里,
这个段落在程序运行的时候不可以被修改
同样内容的字符串字面值在程序运行过程中只会有一份
编译器会自动用第一个字符类型存储区的地址替换字符串
字面值
如果把两个字符串字面值合并在一起则编译器会自动把
它们合并成一个
字符数组也可以用来表示字符串
只要字符数组中包含'\0'字符就可以当字符串用
如果想把一个字符数组当字符串使用就必须在程序
中向字符数组中放'\0'字符
可以在程序中使用字符串字面值对字符数组做初始化
使用字符串字面值对字符数组初始化完成后它们之间
就没有关系了
字符数组里的字符串在程序运行过程中是可以被修改的
不可以使用操作符直接对字符串进行操作
C语言中提供了一组专门的标准函数,这些标准函数
可以用来对字符串做各种处理
为了使用这些标准函数需要包含string.h文件内容
strlen 这个函数可以计算字符串中
有效字符的个数
strcat 这个函数可以把一个字符串的
内容合并到一个字符数组中原有
字符串的末尾
字符数组最终会记录合并后的字符串
这个函数用返回值表示合并后的
字符串
这个函数有可能修改不属于这个数组
的存储区,因此它是有危险的
strncat 这个函数的功能和strcat类似
它比strcat函数多一个整数类型的
参数,这个参数表示最多可以从
后一个字符串中合并多少个字符
内容到字符数组中
如果使用得当这个函数可以避免
危险
(man 函数名 该语句可以查看函数的详细信息)
strcmp 这个函数可以比较两个字符串
是否一样
它把两个字符串对应位置上的字符
进行ASCII码的比较
ASCII码大的字符所在的字符串就
叫大
这个函数通过返回值表示比较结果,
如果前一个字符串大则返回1,如果
后一个字符串大则返回-1,如果一样
大则返回0
strncmp 这个函数也可以比较两个字符串的
大小,它比较的是前n个字符
它比strcmp多了一个整数类型的
参数,这个参数表示要比较的
字符个数
strcpy 这个函数可以把一个字符串复制到
一个字符数组中
这个函数的返回值可以表示复制得到
的新字符串
strncpy 这个函数只会把后一个字符串中的
前n个字符复制到字符数组中
这样可以避免发生错误
可以使用%s作为占位符把一个字符串打印在屏幕上
可以使用%s做占位符在scanf语句中从键盘得到一个
字符串并记录在一个字符数组中
和%s占位符对应的数据应该是数组名称,不需要再取
地址了
使用这种方式从键盘获得字符串可能遇到两个问题:
1.如果输入内容中包含空格字符则只能获得空格字符
前的内容
2.如果输入内容多于数组中存储区个数则会出现严重
错误
fgets函数可以从任何文件中获得字符串
在Linux系统中键盘可以被当作文件看待,这个文件叫
标准输入文件,用stdin表示
fgets函数需要三个参数
1.字符数组的名称(得到的字符串记录在这个数组中)
2.数组中包含的字符类型存储区个数
3.要读取的文件(stdin表示键盘)
这个函数有可能把输入时的回车字符也读入到字符
数组中
scanf("%*[^\n]");
scanf("%*c");
在得到字符串以后要清理可能存在的垃圾数据(输入的字符过多就会有垃圾)
只有当字符数组中没有'\n'字符的时候才需要清理
垃圾数据
预习:
1.多个字符串的存储方式
2.指针数组和二级指针
3.文件操作相关函数
作业:
1.编写函数实现strcat函数的功能
2.编写程序把用户在键盘上输入的表达式结果
计算出来并打印在屏幕上
(假设用户输入的表达式格式一定正确,
表达式中只包含加减符号,所有数字都是
整数,没有空格,第一个数字一定是正数,
计算过程中出现的所有数字都没有超过
整数类型的范围)
3.编写模拟登录程序
正确的用户名是admin
正确的密码是123456
给用户三次机会
如果三次都失败则提示登录 ,否则提示登录成功