1、if语句
* 在C语言中1表示true,0表示false
* else子句从属于最靠近它的不完整的if语句
* 空语句用”;”表示
2、while语句
* break: 终止循环,用于switch、for、while、do_while
* continue: 终止本次循环,用于for、while、do_while
3、do_while语句
* do{
语句
}while(表达式);
* 测试在循环体执行后才进行,可保证循环体至少执行一次
4、for语句
* for(expression1; expression2; expression3) statement
* expression1: 初始化部分,在循环开始时执行一次
* expression2:条件部分,在循环体每次执行前都要执行一次
* expression3:调整部分,在循环体每次执行完毕,在条件部分即将执行之前执行
* 三个表达式都可以省略,如果省略条件部分,表示测试条件始终为真
* for语句要在C99中编译: gcc -std=c99 -o bin/for src/for.c
* for(;;) –> 无穷空循环
;
5、switch语句
* switch(expression)
case
* expression: 结果必须是整型
* 多个case执行同一组语句
case1:
case2:
case3: 语句
* case中的语句结束之前要加break,否则后面的case还会被执行,default子句可以出现在任何
位置,但一般放置在最后,建议在default子句后面也加上break。
指针与指针变量
变量的地址称为指针。
Kolourpaint绘图板
用于存储指针的变量称为指针变量
指针变量用于存储变量的地址
指针变量的值就是变量的地址。
指针变量专门用来存放地址,不能将其它任何非地址类型的数据赋给一个指针变量
一个指针只能指向同一种类型的变量。
Char *str=”hello” //不能修改str 因为指向的是code区的地址,不能随便修改code
指针运算 –偏移量
指针变量做算术运算时,在内存空间内所移动的字节长度
+ – ++ –
长度由指针类型所决定
int * → sizeof(int)
float * → sizeof(float)
char * → sizeof(char)
当出现多种类型
char *pc=&ch;
int *p = pc +1;
偏移量由操作类型决定,与赋值类型无关。
指针和指针运算(减法)
运算结果并非指针地址相减后在内存中所相差的偏移量,而是在元素相差的个数
数组的指针
所谓数组的指针是指数组的起始地址
数组元素的指针是数组元素的地址
规定数组名代表数组的首地址,即第一个元素的地址
数组指针
专门用来变量二维数组,
int (*ap)[n];
n为所要遍历的数组第二个下标长度
1、偏移量
2、ap与*ap的区别
二维数组数组名+1,跳转一行数组所占的空间长度。
Int array[5][7];
array+1 → 跳转 7 *sizeof(int)=28
*+二维数组数组名+1(*array+1),表示在行内跳转一个数组元书的空间长度
*(array+1)+1—> 跳转一行,再跳转一个元素 <==> &array[1][1]
int array[5][6];
int (*ap)[6] =array;
**ap+1 [0][0]+1
*(*ap+1) [0][1]
*(*ap+1)+1 [0][1]+1
*(*(ap+1)+1) [1][1]
**(ap+1)+1 [1][0]+1
指针与字符串
指针数组
#include<stdio.h>
int main(void)
{
char *week[]= //指针数组
{
“Monday”,
“Tuesday”,
“Wednesday”,
“Tursday”,
“Friday”,
“Saturday”,
“Sunday”
};
int dow;
char *date=NULL;
int ch;
do{
printf(“Please input day of week:”);
scanf(“%d”,&dow);
switch(dow)
{
case 1:
date = week[0];
break;
case 2:
date = week[1];
break;
case 3:
date = week[2];
break;
case 4:
date = week[3];
break;
case 5:
date = week[4];
break;
case 6:
date = week[5];
break;
case 7:
date = week[6];
break;
default:
date = NULL;
break;
}
if(date)
{
printf(“day is:%s\n”,date);
}
else
{
printf(“Unknow this day\n”);
}
printf(“continue?(1\\2):”);
scanf(“%d”,&ch);
}while(ch==1);
return 0;
}
二级指针:指向指针的指针
int *p;
int **pp;
pp——>*pp——>**pp