C语言学习笔记--基础语法一

C语言学习笔记

C语言是一种通用的、面向过程的计算机编程语言。不同于Java、C#之类的面向对象的语言,C语言适用于底层开发,执行效率接近于汇编语言。

基础语法

  • 程序结构

    C程序主要包括以下部分

    • 预处理器指令,如#include <stdio.h>
    • 函数,如main()
    • 变量
    • 语句&表达式
    • 注释,///***/单行或多行注释
  • 基本语法

    C程序由各种令牌组成,Tokens;分号结束语句。

    标识符用数字、字母、下划线组成,类似Java,数字不能开头。

autoelselongswitch
breakenumregistertypedef
caseexternreturnunion
charfloatshortunsigned
constforsignedvoid
continuegotosizeofvolatile
defaultifstaticwhile
dointstruct_Packed
double

- 数据类型

C语言数据类型

  • 基本类型,整数型、浮点型。
  • 枚举类型,也算是算数类型,但是枚举定义了一定的变量数值。
  • void类型,无可用值。
  • 派生类型,包括指针类型、数组类型、结构类型、共用体类型和函数类型。

    整数型charunsigned charsigned charintunsigned intshortunsigned shortlongunsigned long

    浮点型、floatdoublelong double之类的。windows下32位、64位系统,变量的值占用字节大小一致,而类Unix下,不完全一致。

    可以用sizeof()函数来确定大小范围。

    
    #include <stdio.h>
    
    
    #include <limits.h>
    
    //主函数入口,有时候会写void,int返回类型,都一样。但是不能不寫,而且有的編譯器要求必須是int返回類型
    void main(){
    printf("int 存储大小:%1u \n",sizeof(int));//注意和Java之类的不同。
    }

    void类型,可以作为返回类型、参数、或者指针的返回指向。

    • 变量

    变量定义

    //定义变量
    int i,j,k;
    char a;
    float f = 2.2f;
    //声明变量,而不用,在函数外。
    extern value;

    C语言有左值(Lvalue)和右值(Rvalue)。其实左值就是变量名的意思,右值可理解为具体数值。

    • 常量

    整数常量,有十进制、八进制、十六进制,用0x或0X表示十六进制。0表示八进制,整数常量可以带一个后缀,U或者L分辨表示unsignedlong,也可以小写。

    浮点常量、字符常量。

转义序列含义
\\\
\’
\”
\??
\a警报铃声
\b退格键
\f换页符
\n换行符
\r回车
\t水平制表符
\v垂直制表符
\ooo一到三位的八进制
\xhh…一到多位数字的十六进制

char是单引号'',字符串是双引号""

定义常量

  • 使用#define
  • 使用const关键字

    
    #include <stdio.h>
    
    
    
    #define LENGTH 10
    
    
    #define WIDTH 5
    
    
    #define NEWLINE '\n'
    
    void main(){
    int area;
    
    area = LENGTH * WIDTH;
    printf("value of area: %d",area);
    printf("%c",NEWLINE);
    }

    const关键字

    
    #include <stdio.h>
    
    int main(){
    const int LENGTH = 10;
    const int WIDTH = 5;
    const int NEWLINE = '\n';
    ....
    return 0;
    }
    • C存储类

    存储类定义C程序中的变量或函数的范围、可见性和生命周期。

  • auto,存储类是所有==局部==变量默认的存储类。

  • register,定义存储在==寄存器==而不是ARM中的局部变量,大小通常为一个词,且不能应用一元的&运算。比较快访问,但不一定就在寄存器内存储啊,切记。

  • static,存储周期为整个程序的生命周期,它也可以用于修饰全局变量,但是会将变量限制在声明的文件内。有点类似JAVA中的静态。

  • extern,也是提供一个全局变量,会对所有程序文件可见,若是没有初始化,其会自动指向上次存储的数值,也可以修饰函数。

    
    #include <stdio.h>
    
    int count;
    extern void write_extern();
    void main(){
      count = 5;
      write_extern();
    }
    
    #include <stdio.h>
    
    
    extern int count;
    void write_extern(void){
      printf("count is %d \n",count);
    }
    • C语言运算符
  • 算术运算符:+-*/%++--、分别是加减乘除和取模、自增、1、自减1。

  • 关系运算符:==!=><>=<=
  • 逻辑运算符:&&||!逻辑与、或、非
  • 位运算符:&|^~<<>>,分别是按位与、按位或、按位异或、反转、左移、右移。
  • 赋值运算符:=+=-=*=/=%=<<=>>=&=^=|=
  • 杂项运算符:sizeof()&*?:分别表示求算大小范围的函数、返回变量的地址、指向一个变量、条件表达式(三目运算符,示例:a>b?x:y,表示如果a>b为真,则取x值,否则取y值。)

    运算符存在优先级,一般可以用()括号来改变。

类别运算符结合性
后缀() 、[]、 -> 、. 、++、 - -从左到右
一元+ 、- 、! 、~ 、++、 - -、 (type)*、 &、 sizeof从右到左
乘除*、 / 、%从左到右
加减+ 、-从左到右
移位<< 、>>从左到右
关系< <= 、> >=从左到右
相等==、 !=从左到右
位与 AND&从左到右
位异或 XOR^从左到右
位或 OR|从左到右
逻辑与 AND&&从左到右
逻辑或 OR||从左到右
条件?:从右到左
赋值=、 +=、 -=、 *=、 /=、 %=、>>= 、<<=、 &= 、^=从右到左
逗号,从左到右

Note:逗号运算符,C++中有描述,用于分隔一系列的运算表达式

int a = 10,b = 12,c = 20;
int d = 0;
//逗号用于分隔不同的运算式,但是赋值,仅区最后一项运算结果
/*
 d = (a++,b--,c+=15);
//此时d值就是c+15 = 35,而同样此时,a值已经++,b值已经--,
printf("d = %d\n",d);
/*
//注释掉上面的赋值运算了,
d = (a++,b--,a+90);
//那么此时,d的值就是101,既,a++,a+90;
  • 判断与循环

    1、ifif...elseif嵌套switchswitch嵌套也可以三目运算符? :

    2、whilefordo...while嵌套循环,配合循环控制语句breakcontinuegoto(控制转移到被标记的语句,一般不建议使用。);条件为永远为真的循环,为无限循环,程序用应避免这个。还有就是控制条件为空语句,那么就是无限循环了。

#include <stdio.h>
void main(){
    for(;;){
        printf("无限循环中......");
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值