• 枚举,进制转换,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*类型指针

    可以接受任意类型的指针

    不能解引用 

    不能+-整数 

  • 相关阅读:
    14.计算机网络---应用层之HTTPS
    MySQL JDBC编程
    java计算机毕业设计互联网校园家教兼职平台源码+mysql数据库+系统+lw文档+部署
    Kafka基础与核心概念
    C++: 模板初阶
    【数据结构:线性表——2.2 列表】
    编译和链接到底是什么
    Sndroid开发设置Settings
    Python 对象保存优化机制
    go 操作 redis
  • 原文地址:https://blog.csdn.net/qq_37891604/article/details/132871448