• 基础数据结构和宏


    【结构体】

    一.认识结构体

    //结构体是一种复合的数据结构,是将基础变量类型和复合的变量类型封装成的新的数据结构。

    //自定义的类型。

    【注】函数是对处理数据的功能的封装。

    结构体是对存储数据的数据结构的封装。

    将存储数据的数据结构和管理这些数据的方法封装到一起,就形成了类。

    二.结构体的赋值和初始化

    三.在iOS当中结构体的典型应用

    四.返回结构体的函数

    *五.结构体的大小

    【不同设备对齐方式不同】

    六.结构体指针

    【枚举】

    型号  T180    TT180

    色彩  红色     黄色

    这些数据不适合使用基础数据类型存储,也不能封装成结构体。

    这些简单的,直观地数据。可以使用枚举进行存储

    【宏】

    一.认识宏

    //宏是发生在预处理阶段的简单的字符串替换

    【见预处理相关的C代码】

    //编译分四个步骤

    预处理 C ——>  C

    //展开头文件,替换宏

    gcc -o 2.i 2.c -E

    编译 C ——>  汇编

    //主体步骤

    gcc -o 2.s 2.i -S

    汇编 汇编 ——> 二进制码

    gcc -o 2.o 2.s -c

    链接 生成可执行程序

    gcc -o test 2.o

    二.宏

    【注】宏的作用千变万化,灵活使用有很多作用。这里介绍简单的一些功能。

    //将一些可能被修改的常量,声明为宏。便于使用,便于修改。CocoaLigature1

    三.带参的宏

    //宏的“参数”和“返回值”都是字符串,而不是一个值,如果要保证参数和返回值是一个整体,需要用括号括起来。

    #define MUL(a, b) ((a) * (b))

    四.多于一条语句的宏

    //当宏中有多条语句,理应将多条语句放到一个大括号中。

    #define SWAP(a, b) {int tmp = a; a = b; b = tmp;}

    //当宏中需要换行,需要在上一行末尾加上,连接下一行。

    #define SWAP(a, b) {int tmp = a;

    a = b;

    b = tmp;}

    【动态内存分配】

    一.静态内存分配

    //所分配内存空间的大小,在编译时确定,在运行时无法修改。

    //如,栈段和只读数据段,数据段都是静态内存分配。

    【缺点】

    现在我需要输入100个字符串,输入一个,打印一个。其中99个不超过3个字符,有1个占3000字符。问字符数组开多大?

    二.动态内存分配

    //分配的空间在堆段,由程序猿在编写代码时规定空间大小。在运行时可以任意的开辟,释放甚至修改空间大小。

    =========

    栈段

    堆段

    数据段

    只读数据段

    代码段

    =========

    *三.区别

    静态内存分配

    编译时决定空间的大小

    确定空间大小的是编译器

    开辟的空间在栈段,数据段,只读数据段

    自动释放

    动态内存分配

      程序运行时,确定空间大小

    确定空间大小的是程序猿

    开辟的空间在堆段

    通过代码手动释放

    who when where how

    【注】堆空间不会随着函数调用结束而释放,但是如果程序结束,所占用的空间(包括堆)都会消失。

    pow(2, i)

  • 相关阅读:
    CSS实例:图片导航块
    导航,头部,CSS基础
    web基础,用html元素制作web页面
    web基础
    timestamp与timedelta,管理信息系统概念与基础
    datetime处理日期和时间
    中文词频统计
    文件方式实现完整的英文词频统计实例
    当你发现任务管理器打不开
    恶搞关机
  • 原文地址:https://www.cnblogs.com/liudongyan/p/4395171.html
Copyright © 2020-2023  润新知