c基础总结

        基础知识   

符号

代码中用到的单词:

  1. 关键字:C语言语法已经用掉的单词,这些单词都已经有了固定作用
  2. 标识符:(1)程序员自己可以命名的单词不能是关键字 ;(2)由大小写字母和0~9数字符号以及下划线构成;(3)只能以字母或者下划线;(4)开头区分大小写;
  3. main函数名不是关键字,是操作系统要求的多个函数的函数名不能重名
  4. 无符号数不能是负数,优先级:无符号>有符号

    int 转换成 unsigned int不需要强制转换

    类型的级别从高到低依次是long double,double,float,unsigned long long,long long,unsigned long,long,unsigned int,int。

    例外的情况下,当long和int的大小相同时,unsigned int 比 long的级别高。之所以short和char类型没有列出,是因为它们已经被升级到int或unsigned int。

  5. c语言中没有string,要想在c语言中使用字符串,就要在头文件里定义#include<string.h>

  6. 规定数据输出方式的,

    1.%d有符号10进制整数。

    2.%i有符号10进制整数。

    3.%o有符号8进制整数。

    4.%u无符号10进制整数。

    5.%x无符号的16进制数字,并以小写abcdef表示。

    6.%X无符号的16进制数字,并以大写ABCDEF表示。

    7.%F/%f浮点数。

    8.%E/%e用科学表示格式的浮点数。

    9.%g使用%f和%e表示中的总的位数表示最短的来表示浮点数G同g格式,但表示为指数。

    10.%c单个字符。

    11.%s字符串。

    12.%%显示百分号本身。

    int  %d

    float %f

    double %lf

    char %c %s

    long int  %ld

    1. “china”字符串      %s  6

      ‘c’,’h’,’i’,’n’,’a’单个字符  %c                                                                                                char c[i]=('h','e','l','l','o');                                                                                                     char b[]="world";                                                                                            

  7. void  和int   在于有没有返回值

  8. sizeof(类型)-- 计算字节数

  9. x%y:求x除以y的余数        ​​​​​​%参与运算的对象必须是整型数                                                       (int)a%(int)b

  10. 自增     i++    i=i+1; 先使用i,再++

        ++i    i=i+1; 先++,再使用i

  11. 命令模式下:​(1)​​​​​ yy:复制一行 (2) nyy:复制n行(光标选中,往下n行)                               (3)dd:删除(剪切)一行 (4)ndd:删除n行(光标选中,往下n行)                              (5)p:粘贴(6)u:撤销(7)Ctr+’r’:反撤销(8)ctrl+v,d删除选中                                                                                                                                                                                               

  12.  三大结构

  13. 与“&&”

    或“||”

    与和或连接的是两个表达式

  14. 单分支结构:

  15. 双分支结构:

  16. 多分支结构:

  17. 注意常量表达式

    break不是必须的,按照题目要求,是否添加

    default不是必须的,按照题目要求,是否添加 

    case指定范围

    case low ... high:

  18. for循环

    for(表达式1表达式2表达式3){

    语句;

    }

    表达式1:设置初始条件,只执行一次,可以0或者多个表达式赋初始值

    表达式2:循环条件表达式

    表达式3:作为循环的调整

  19. 外层循环走一步,内层循环走一圈

  20. #include <math.h>

    pow(数值,次方)n次方的函数

    gcc 名字 -lm

    C 库函数 - sqrt()
    1. ​​​​​​C 标准库 - <math.h>

      描述

      C 库函数 double sqrt(double x) 返回 x 的平方根,例如4的平方根是2

      声明

      double sqrt(double x)

      参数

      x -- 浮点值

      返回值

      该函数返回 x 的平方根

      gcc编译时后面加上-lm                                                                                                                                                                                                                                            

    2.  位运算                                                                                                                             单位的换算:   

    3. & -- 位与

      | -- 位或

      ~--取反

      ^ 异或

      << 左移

      >> 右移

    4. 十进制负整型转换为二进制数:        取反加一                                                                       (1)第一步:先将该负整数对应的正整数转换为二进制数。                                         (2)第二步:对得到的二进制数取反。                                                                           (3)第三步:加1。             

    5. 补码运算:

      假设两个四位二进制数0111和0110为无符号数,我们来计算一下两者之间的减法:0111-0110=7-6=1。

      由于计算机没有减法运算,我们可以先求减数相对应的补数,四位二进制数的模为2^4=16,那么6的补数为16-6=10,也就是说7-6=7+10=17,0111-0110=0111+1010=10001。

      因为只有4位,所以最高位省略,得到0001=1,正好是原本的计算结果。

    6. 位操作符:

      & 与运算 两个位都是1时,结果才为1,否则结果为0

      | 或运算 两个位都是0时,结果才为0,否则结果为1                                                                                                                                                                                                  ^ 异或运算 两个位相同则为0,不同则为1                                                                                                                                                                                                                   ~ 取反运算,1则变为0,0则变为1                                                                                   

      << 左移:左移一位相当于*2

                    <<左移运算,向左进行移位操作,高位丢弃,低位补0                                     

      >> 右移

      右移一位相当于/2  

    7. 区分进制数                                                                                                                        后缀区分    B:二进制        H:十六进制     O:八进制     D十进制                                前缀区分    0x:十六进制    0:八进制          0b:二进制

    8. 判断奇偶性    n&1         

    9. 交换两个数     a=a^b;                                                                                                                               b=b^a;                                                                                                                               a=a^b;

    10. 将第七位置0

      以32位机为例

      x=   1111 1111 1111 1111 1111 1111 1111 1111                 

    11. 取32bit无符号整数0x12345678的高16bit和低16bit,分别保存在两个16bit的无符号整数并显示出来。                                                                                                                                                           

    12. 数组,字符数组

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
链表是一种常用的数据结构,用于存储一系列元素。C语言中,链表是通过指针来实现的,每个节点包含数据和指向下一个节点的指针。 以下是链表的基础知识总结: 1. 链表的定义: ```c struct Node { int data; struct Node* next; }; ``` 其中,data 表示节点存储的数据,next 表示指向下一个节点的指针。 2. 链表的操作: - 创建节点: ```c struct Node* createNode(int data) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->data = data; node->next = NULL; return node; } ``` - 插入节点: ```c void insertNode(struct Node* head, int data) { struct Node* node = createNode(data); node->next = head->next; head->next = node; } ``` 其中,head 表示链表头节点。 - 删除节点: ```c void deleteNode(struct Node* head, int data) { struct Node* p = head->next; struct Node* q = head; while (p != NULL) { if (p->data == data) { q->next = p->next; free(p); break; } q = p; p = p->next; } } ``` - 遍历链表: ```c void traverseList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } ``` - 销毁链表: ```c void destroyList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { struct Node* q = p; p = p->next; free(q); } head->next = NULL; } ``` 3. 链表的优缺点: 链表的优点是插入和删除操作的时间复杂度为 O(1),而数组的时间复杂度为 O(n)。但是,链表的缺点是无法随机访问元素,需要遍历整个链表才能找到要查找的元素。此外,链表需要额外的空间来存储指向下一个节点的指针。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值