c的复习之旅(2)

一、三大结构

顺序结构:程序就是按照从上往下执行的

条件结构:if语句,switch语句(目前知道的)

int a=1;

if(a)                    //当if()里的条件成立里,不为0或假,就执行下面的一条语句
    printf("a=%d",a);    //有多条语句时可用{ }括起来
else                     //有if,if...else,if...else if...else多种形式
{                        //也可以嵌套
    printf("a=0");
}

循环结构:for循环,while循环,dowhile循环

int i;
for(i=0;i<10;i++)        //i=0是初始条件,可没有
{                        //i<10是判断条件,成立就执行,并且每次都会判断一下直到不成立,一定要有
    printf("%d",i);      //i++是语句,条件成立后会执行一次,也可没有
                         //{ }是成立执行的语句,也可没有,只会循环占时间
}    
int a=0;
while(a<10)    //( )内的条件成立时就执行{}内语句
{              //不然就是跳过
    a++;        
}

while(1)        //死循环,程序不会停止
{

}

while(0)        //空循环,没有用
{

}

二、函数

有自定义的函数和库函数

int sum(int x,int y)        //自定义的求和函数
{                    
    int z;
    z=x+y;
    return z;
}

void main()
{
    int a=1,b=2;    
    printf("%d",sum(a,b));    //获得其返回的z
}

自定义的函数格式:

返回类型 函数名(形参)

{

(实现的操作)
}

形参要有数据类型和在操作里的变量名;方便后面调用时,传实参进去

库函数:别人写好了的函数,只要添加了头文件就能使用了,还有很多其它的库函数

#include "stdio.h"

void main()
{
    sizeof(int);    //是stdio.h文里的函数sizeof,得到int的大小
}

三、数组

数组是一组相同类型的数据的集合体

定义:数据类型  数组名【长度】

初始化:只有刚定义的时候可以全部赋值

#include "stdio.h"

void main()
{  
    int num[10]={0,1,2,3,4,5,6,7,8,9};         //整型数组,全部初始化了
    char srt[10]={'h','e','l','l','o'};        //字符数组
                                               //可以不用全部初始化,没有赋值的默认为0

    printf("%d",num[0]);            //引用的索引是从0开始的
    printf("%s",srt[1]);            //那么这打印是e

    num[0]=10;                      //赋值的索引也是从0开始的,并且只能一个一个赋
    printf("%d",num[0]);            
}

引用:数组名【索引】(第一个元素的索引是0)

赋值:数组名 【索引】= 数值;(只能一个赋,索引也是从0开始的)

四、操作符

1.算术运算符(优先级为4,3)

加  +(正号)    减  -(负号)       

乘  *         除  /        

求余  %(如2%3=0,3%2=1)

tips:这些运算符里,只有%要求两边一定要是整型,不能有整型

2.关系运算符:(优先级均比算术运算符低)

优先级比较高的:<,<=,>,>=(优先级为5和6)

较低的:==(等于),!=(不等于)(优先级为7)

比出来的值仍然是只有0和1,即真与假。

3.逻辑运算符:

和:&&(优先级为11)

或:||(优先级为12)

非:!(优先级为2)

还有按位逻辑运算符:

&(按位与)                |(按位或)        ^(按位非)

4.自增,处减运算符(优先级为2)

i++(i--)在使用i之后,使值加(减)1

++i(--i)在使用i之前,使值加(减)1

5.条件表达式

exp1?exp2:exp3;

exp1判断是否成立,如果成立,就进行exp2的运算,不然进行exp3的运算

//可以用来进行选择操作

#include "stdio.h"

void main()
{
	int a;
	printf("玩游戏不(0/1)\n");
	scanf("%d",&a);
    a==1?printf("玩得差不多了,学习吧\n"):printf("那就敲代码吧\n");
                        //差不多一个if语句
}

可能还有其它用,后面慢慢研究

6.其它一些操作符       

&        取地址符

*        间接访问操作符(指针时用)

(数据类型)        强制转换类型

!        逻辑取反操作(只有0和1)

->        指向结构体成员运算符,用处是使用一个指向结构体或对象的指针访问其内成员

五、关键字

c中原本就定义好了的一些字符,可以直接用,但不能在变量,函数命名时与之重复

auto 自动变量,全部变量前都有,可省略不写了

break 跳出整个循环,在switch中常见

continue 跳出这一条循环,但是还是会继续这个大循环

case 在switch 中常见

default 在switch中常见,如果没有与之对应的情况,就执行一条语句或者跳出switch

char double float long short int        都是数据类型

const 修饰变量使之变成常变量

extern 声名外部变量

signed unsigned 有符号与无符号类型,既有无负数

static 如果是局部变量,将变量变成静态变量,存在静态区,不会多次赋初值

        如果是全局变量,那么会将它的外部链接属性变成内部链接属性,只能在当前.c文件中可用,不能再放在其它.c文件中使用,即使用extern声名也不行

        如果是函数,那也会将它的外部链接属性变成内部链接属性

srtuct 好像是结构体的定义语句,还不是很会

typedef 重命名,typedef unsigned char uchar(将unsigned char 命名为uchar )(与#defien方式不同,#defien uchar unsigned char)

volatile 听说是个很高级的东西,还不会

六、宏定义

可以用来定义一些要重复使用的复杂的数据类型或者变量名(方便使用)

#define Pi 3.14
#define LED1 GPIO_PIN_8

本质是替换


#define add(x,y) x+y

#incldue "stdio.h"

void main()
{
    int a=1,b=3;
    printf("%d",4*add(a+b));    //这个结果16?不是,是7
}                                //宏定义的本质是替换,将add(a+b)替换成a+b
                                 //表达式是4*a+b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值