C语言复习10
C语言学习,在这里推荐浙江大学翁恺老师的视频,慕课网网址:https://www.icourse163.org/learn/ZJU-9001?tid=9001#/learn/content
。笔者的复习笔记也主要是根据该视频进行。本文的主要内容如下
- 程序设计与C语言
- 计算
- 判断
- 循环
- 循环控制
- 数据类型
- 函数
- 数组
- 指针
- 字符串
字符串;字符串函数;上机10; - 结构类型
- 程序设计
- 文件
- 链表
refer
1.
10.1 字符串
一、字符数组
字符数组和字符串不同,字符数组就是以char的数组实现的,其结尾不需要加'\0'
举例如下:
二、字符串
而字符串的结尾需要加'\0'
,字符数组的长度增加了一字节,如下:
在string.h的文件内有很多处理字符串的函数。在这里需要注意的是字符串和字符数组的索引都是从0开始的。
字符串变量的常见书写方法有以下几种:
char str[] = {'1', '\0'};
char *str = "1"; // 指针形式,最常见的形式1
char str[] = "1"; // 数组形式,最常见的形式2
char str[2] = "1";
C中,字符串的是以字符数组的形态存在的,但是仍然存在区别。需要注意的是char *str = "1";
是一个const char *str
类型,通过指针不能修改,所以如果创建需要修改的字符串,应该创建字符数组char s[] = "1";
那么何时用指针,何时用数组呢?如果要构造一个字符串用数组(需要改变内容),如果要处理一个字符串用指针(不需要改变内容)。
三、字符串的输入输出
除了整型和浮点型,字符串属于新的类型。他的输入输出也不同。输入输出需要用到"%s"
。例如:
四、字符串数组
有时候我们需要使用多种字符串,可以使用的声明方式有:
char *a[]; // a是一个一维数组,其中每一个a[n]都是一个char *字符串,即通过指针不能更改的字符数组
看char *a[]时候,可以先把[]忽略不看,这样比较好理解。
五、程序参数
我们需要注意的是:
char *str <==> const char *str // char *字符串是通过指针不能修改的字符数组
char const *argv[] <==> const char *argv[] // 通过指针不能修改(const写前写后无所谓)
char * const argv[]; // 指针不能修改(const用于修饰变量)
回到main函数,我们能看到main函数的完整构造是
int main(int argc, char const *argv[])
。其中argc是argument count缩写,argv是argument value的缩写,即运行程序的参数。例子如下:
10.2 字符串函数
我们需要了解两个常用的字符输出/输出函数putchar和getchar。
Unix的terminal中,停止输入是ctrl+d,终止程序是ctrl+z
字符串函数存在于string.h中。