• 枚举,进制转换,char*,补码,算法,链表,位运算,NULL的含义


    目录

    什么是枚举

     进制转换

    字符指针

    补码

    算法

    链表 算法

    位运算符 

    ​编辑

    ​编辑

    NULL的含义

    void*


    什么是枚举

     

     

     进制转换

    4个二进制位组合才能有16个状态

     

    字符指针

    补码

     编码就是解决这个东西到底用哪个二进制表示

    不够位数指的是比如32位,前面都补1 

     

     

     

    1. #include
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. int main()
    7. {
    8. char ch = 0x80;
    9. printf("%d\n", ch);
    10. ch = 128; // 128是2的7次方,// 128是整型,占四个字节 00000000 00000000 00000000 10000000
    11. //char占一个字节,把四个字节赋给一个字节前面被截掉,就把1000 0000放进去了
    12. // 1000 0000 但是我们知道1000 0000 首位为1代表负数,
    13. // 负数二进制如何转为10进制
    14. // 0111 1111
    15. // + 1
    16. // 1000 0000
    17. // 128, 所以1000 0000是-128
    18. //所以1000 0000 前面需要补0 才能表示它是正数
    19. printf("%d\n", ch); // 输出 -128
    20. //所以输出-128
    21. ch = 129; // 00000000 00000000 00000000 1000 0001
    22. //char占一个字节,把四个字节赋给一个字节前面被截掉,就把1000 0001放进去了
    23. // 0111 1111 ->127
    24. // 所以结果是 -127
    25. printf("%d\n", ch);
    26. system("pause");
    27. return 0;
    28. }

     

    算法

    链表 算法

     

    1. #include
    2. #include
    3. #include
    4. // 定义链表结点的数据类型
    5. struct Node
    6. {
    7. int data; // 数据域
    8. struct Node* pNext; // 指针域
    9. };
    10. //创建链表,并返回头节点的地址
    11. //静态的建函数运行完就没了
    12. struct Node* CreateList()
    13. {
    14. int len; // 用来存放有效结点的个数
    15. int val; // 用来临时存放用户输入的结点的值
    16. // 分配了一个不存放有效数据的头结点
    17. struct Node* pHead = (struct Node*)malloc(sizeof(struct Node));
    18. if (pHead == NULL) {
    19. printf("分配失败,程序终止\n");
    20. exit(-1); // 终止程序
    21. }
    22. struct Node* pTail = pHead;
    23. pTail->pNext = NULL;
    24. printf("请输入需要生成的链表节点的个数: len = \n");
    25. scanf_s("%d",&len);
    26. for (int i = 0; i < len; i++) {
    27. printf("请输入第%d各节点的值:", i + 1);
    28. scanf_s("%d", &val);
    29. struct Node* pNew= (struct Node*)malloc(sizeof(struct Node));
    30. if (pNew == NULL) {
    31. printf("分配失败,程序终止\n");
    32. exit(-1);//终止
    33. }
    34. pNew->data = val;
    35. pNew->pNext = NULL;
    36. pTail->pNext = pNew;
    37. pTail = pNew;
    38. }
    39. return pHead;
    40. }
    41. void TraverseList(struct Node* pHead)
    42. {
    43. struct Node* p = pHead->pNext;
    44. while (p!=NULL) {
    45. printf("%d ", p->data);
    46. p = p->pNext;
    47. }
    48. return;
    49. }
    50. int main(void)
    51. {
    52. struct Node* pHead = NULL; //pHead用来存放链表头节点的地址
    53. pHead = CreateList();
    54. TraverseList(pHead);
    55. system("pause");
    56. return 0;
    57. }

    位运算符 

    如果想知道某一位是几,比如想知道第一位和第三位是几,可以与0101与,那么如果1和3位结果是1 就说1和3位原来是1,如果1和3位结果是0 就说1和3位原来是0

     

     

    NULL的含义

    void*类型指针

    可以接受任意类型的指针

    不能解引用 

    不能+-整数 

  • 相关阅读:
    docker部署多个node-red操作过程
    Centos7 编写开机监测gdm服务退出的脚本
    Vue 2.0的源码构建
    爱奇艺:基于龙蜥与 Koordinator 在离线混部的实践解析
    06、Python 序列 与 列表 与 元组 的关系和创建 和 简单使用
    【Django笔记】5 Django模板
    1w5字详细介绍分布式系统的那些技术方案
    机器视觉公司还是招人?
    程序员该如何理解javascript的单线程?
    容器化技术最佳实践1--容器化技术简介与Docker入门
  • 原文地址:https://blog.csdn.net/qq_37891604/article/details/132871448