1.1 C旅程的起点

做了三年的FPGA了,感慨良多。最大的失误是没有做好一个系统的记录。我的C旅程即将开始,一定要做一个系统的记录。学了两周的c,写了一个简单学习总结

C程序主要包含5部分
    预处理指令(通过#标识)
    函数
    变量
    语句&表达式
    注释(//,或/*  */)

基本类型占用空间:
    char   : 1个字节 
    int    : 4个字节
    float  : 4个字节
    double : 8个字节

关键字(变量)
    int      :整形变量或函数
    float    : 单精度浮点
    double   : 双精度浮点
    char     : 字符变量或函数返回类型
    #define  : 使用预处理器定义常量
    const    : 定义常量
    auto     : 自动变量(只能用在函数内,只能修饰局部变量)
    extern   : 变量或函数是在其他文件或本文件其他文章定义(引用一个全局变量时,用它做声明,多用于多个文件共用相同的全局变量或函数)
    register : 寄存器变量
    sizeof   : 计算数据类型长度
    static   : 静态变量(同一个文件内,值不变)
    typedef  : 使用该关键字可以为类型取一个新的名字;包括结构体,可以重新给新的命名

字符常量
    \\    : \字符 
    \'    : '字符
    \"    : "字符
    \?    : ?字符
    \b    : 退格
    \n    : 换行
    \r    :回车
    \t    : 水平制表符
    \v    : 垂直制表符
    \ooo  : 一到三位八进制数
    \xhh  :一个或多个十六进制数

运算符
    算术运算符 : + - * / % ++ --
    关系运算符 : == != > < >= <=
    逻辑运算符 : && || !
    位运算符   : & | ^
    赋值运算符 : = += -= *= /= %= <<= >>= &= ^= |=
    其余       : &(返回地址); *(返回一个数); sizeof()(返回变量带大小); ?:(条件表达式)

判断语句
    if语句
    if...else 语句
    if嵌套语句
    switch语句:
        {
            case 1 : 语句 break;
            ...
            default : break;
        }
    switch嵌套语句

循环语句
    while循环  (先判断后循环,为真进入循环);
    for循环    (初值,循环条件,执行条件);
    do...while (先循环,后判断,为真继续循环);
    break      (终止循环,继续执行下一条语句);
    continus   (对循环体有效,停止本次循环,重新开始);
    goto       (无条件转移);

数组
    1,定义多维数组;
    2,传递数组到函数三种方法:通过指针,通过数组名包含数字大小,不包含数组大小;
    3,从函数返回数组,只能通过返回指针的方式返回,函数定义为指针函数; 返回的是不带索引的数组名(int r[10];  return r;);
    4,指向数组的指针,通过不带索引的数组名来指向数组中的一个元素的指针(int b[10]; int *p; p=b;(实际就等于*p=b[0]; *(p+1)实际对于b[1];))

枚举
    定义1: enum 枚举类型 {元素1,元素2,... }; (不定义枚举变量,后面使用的时候再定义)  enum 枚举类型 枚举变量;
    定义2: enum 枚举类型 {元素1,元素2,... } 枚举变量;
    定义3: enum {元素1,元素2,...} 枚举变量;  (省略枚举类型)

指针
    1,指针定义(*p(指向地址p的数据用*p表示));
    2,指针的算术运算
        {
            int d[6]; 
            int *p;  //定义数组
            for(p=d;p<&d[6];p++) //将指针指向数组的最后一个地址,指针递增; 
             printf("addr=%p,data=%d",p,*p);
        }
    3,指针数组
        {
            int d[3]; 
            int *p[3];//定义的指针数组 
            int i=0; 
            for(i=0;i<3;i++)
            {
                p[i]=&d[i];//将指针指向数组d;
                printf("i=%d,*p=%d"i,p[i]);
            }
        }
    4,指向指针的指针(int d; int *p; int **pr; pr=&p;p=&d);
    5,传递指针给函数,只需声明函数的形参为指针类型就可以;传入函数的时候穿地址;
    6,从函数返回指针,声明函数为指针函数;如上函数返回数组相同;

字符串
    1,字符串定义:char str[6]字符串最后一个地址默认放到是'\0',不可改变;
    2,字符串相关函数
        (1) strcpy(s1,s2) : 将字符串s2复制到s1;
        (2) strcat(s1,s2) : 将字符串s2接到s1末尾;
        (3) strlen(s1)    : 返回字符串长度;
        (4) strcmp(s1,s2) : 字符串比较,相同为0,s1大返回大于0,s1小返回小于0

结构体
    1,结构体主要包括四部分:struct 标签{ 变量定义列表... }结构变量;
    2,定义一个结构体:struct, 标签, 结构变量最少出现两部分;
    3,也可以用typedef创建新类型结构体;
    4,访问结构体可用 访问运算符(.): 结构变量.变量1;
    5,结构体作为函数参数传递,将结构变量传递给参数即可;
    6,指向结构的指针,需要用->;

共用体i
    1,定义: 与结构体类似,定义了一个新的数据类型;主要包括四部分;
    2,访问共用体的方式与结构图类似;

输入或输出
    1,标准输入输出为:stdin-键盘,stdout-屏幕;
    2,getchar()和putchar();分别为从键盘取一个字符或输出一个字符到屏幕;
    3,gets()和puts;分别为从键盘取一个字符串,输出一个字符串到屏幕;
    4,scanf()和printf();输入,输出;

文件读写
    打开文件: FILE *fopen("filename","mode(r,w,a,r+,w+,a+)");
    关闭文件: fclose(fp);
    写入文件: fputc(c,fp)写一个字符c;fputs(s,fp)写一个字符串s;
    读取文件: fgetc(fp)读一个字符;fgets(s,n,fp)读一个字符串到s;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值