C语言
一
哨兵字符:出现在字符串末尾的附加字符,他的值为\0,占用一个字符位置,作为结尾,在此处停止。
1.为什么字符从0开始编号,不是1?
答:字符的索引值是一个偏移量,它表示的是要引用的这个字符到数组第一个字符中间有多少字符
2.为什么要这样做?
答:因为计算机在存储器中以连续字节的形式保存字符,并利用索引计算出字符在存储器中的位置。假如计算机知道c【0】位于存储器10号单元,那么c【3】就可以很快计算出在10+3这个单元。
3.哨兵字符的意义?
答:C语言是比较的底层的语言,他通常不知道字符串的长度,字符串是个数组。
4.C语言知道数组的的长度吗?
答:不知道。通过编译器分析代码来计算出数组的长度。
5.单、双引号的区别?
答:单引号通常用来表示单个字符,双引号通常用来表示字符串
6.用双引号定义字符串,还是以显式字符数组的形式定义字符串?字符串字面值和字符数组的区别?
答:通常应该用双引号来定义字符串。用双引号定义的字符串叫字符串字面值(string literal),比起字符数组,它输入起来也更方便。
区别:字符串字面值是常量。
二 指针和存储器
指针:就是存储器中某条数据的地址
指针读写数据
a.得到变量的地址
1.%p:获得地址以16进制输出
2.&x:找到变量在存储器中的位置
3.指针变量:保存存储器地址的变量
int *address_of_x=&x;(这是一个指针变量,它保存的是一个地址)
b.读取地址中的内容
有了存储器地址,读取数据: int value_stored=*address_of_x;
*:保存地址,读取数据
&:接收数据,读取数据的地址
三 循环语句
1.Switch语句:有限次条件中的判断,判断某个具体的数值,而非判断条件来做出下一步选择。
switch case break,遇到break立即退出,漏掉break会让代码出错,在每个case后面跟break,这样即使会损失效率,但能提升可读性。
2.While语句:最基本的循环结构,只要条件为真,while就会一直运行代码。
Do while语句:做出一个行为之后再进行循环。
int counter = 1;(这是循环启动代码)
while (counter < 11) {(这是循环条件)
printf("%i个枣\n", counter);
counter++;(这是循环更新代码,它用来在循环体的末尾更新计数器)
3.For循环语句:
int counter;
for (counter = 1; counter < 11; counter++) { (初始化循环变量;每次循环执行前对条件
进行检查的代码;每次循环后运行的代码)
printf("%i个枣\n", counter);
break语句:可以用来退出循环语句和switch语句,break不能从if