• 专题


    专题

    1. 动态内存分配的问题

      1. 传统数组的缺点

        1>数组长度必须事先指定,且只能是长整数,不能是变量

        例子:int a[5];//OK

        int len = 5; int a[len]; // error

        2>传统形式定义的数组,该数组的内存程序员无法手动释放

        在一个函数运行期间,系统为该函数中数组所分配的空间会一直存在,直到该函数运行完毕时,数组的空间才会被系统释放

        3>数组的长度不能在函数运行的过程动态的扩充或者缩小(数组的长度一旦定义,其长度就不能再更改)

        4>A函数定义的数组,在A函数运行期间可以被其他函数使用,但运行完毕之后,A函数中的数组将无法被其他函数使用

        传统定义的数组无法跨函数使用

      2. 为什么需要动态分配内存

        动态数组很好的解决了传统数组的这4个缺陷

        传统数组也叫静态数组

      3. 动态内存分配举例------动态数组的构造

        /*
         2020年6月14日16:56:07
         
        */

        # include <stdio.h>
        # include <malloc.h> // 不能省

        int main(void)
        {
        int i = 5; // 分配了四个字节   静态分配
        int * p = (int *)malloc(4); //12行 int * 表示强制转换为 整形地址
        /*
        1.要使用malloc函数,必须添加malloc.h这个头文件
        2.malloc函数只有一个形参,并且形参是整数
        3.4表示请求系统为本程序分配4个字节
        4.malloc函数只能返回第一个字节的地址
        5.12行分配了8个字节,p变量占4个字节,p指向的内存也占4个字节
        6.p本身所占的内存是静态分配的,p所指向的内存是 动态分配的
         
                                   */
        *p = 5; // *p 代表的就是一个int变量。只不过*p这个整形变量的内存分配方式和i的分配方式不同
        free(p); //free(p)表示把p所指向的内存给释放掉, p本身是内存是静态的,不能由程序员手动释放,p本身
                // 的内存只能在p变量所在的函数运行终止时,由系统释放
        printf("同志们好 ");

        return 0;

        }
      4. 静态内存和动态内存的比较

        1. 静态内存是系统自动分配,由系统自动释放,静态内存是在栈分配的
        2. 动态内存是由程序员手动分配,手动释放,动态内存是在堆分配的
      5. 跨函数使用内存的问题

    枚举

    1. 什么是枚举

      把一个事物所有可能的取值一一列举出来

    2. 怎样使用枚举

    3. 枚举的优缺点

      代码更安全但是书写起来比较麻烦

    进制转换

    16进制 0---9 A --- F 10(16) 11(17) -------1F 20 ---- 2F

    8进制 0 1 2 3 4 5 6 7 逢8进1, 8->10 9->11 10->12

    在汇编中:在数字后面加字母B表示二进制,加字母O表示八进制,加字母D表示十进制,加字母H表示十六进制

    预备知识:

    小数除以大数,则商为零,余数是小数本身

    十进制--->二进制 除2取余 倒排

    十进制转R进制: 除R取余 倒排

    R进制转十进制:

    一个十六进制位有16种状态,需要4个二进制位才能表示(2^4 = 16)

    二进制转十六进制:

    方法:从右到左,四位一段,分别转化,不够四位的补零

    例如:(01011110)2——>(0010,1110)2左补一个零------>(2E)16

    0001>>>1

    0010>>>2

    0011>>>3

    0100>>>4

    0101>>>5

    0110>>>6

    0111>>>7

    1000>>>8

    1001>>>9

    1010>>>A

    1011>>>B

    1100>>>C

    1101>>>D

    1110>>>E

    1111>>>F

  • 相关阅读:
    Socket
    UIView的layoutSubviews和drawRect方法何时调用
    断点续传
    IOS后台执行
    应用程序的状态
    ASIHTTPRequest的使用
    XCode5 使用AutoLayout情况下改变控件的 方法
    从指定的view中截图 返回UIImage
    找到当前视图的父视图控制器
    07.网络总结(面试方面)
  • 原文地址:https://www.cnblogs.com/icoding233/p/13174179.html
Copyright © 2020-2023  润新知