Home » 未分类 » Linux C 学习笔记 八

Linux C 学习笔记 八

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

This entry was posted in 未分类. Bookmark the permalink.