• ios学习记录 day14


    动态内存分配

    1.队列和栈的区别 : 栈中得变量 先进后出   ,队列中得变量 先进先出

    2.堆内存 一般由程序员分配和释放

    3.malloc: void *malloc(unsigned int size);//void * 表示任意类型的指针

    int * p = (int *)malloc(sizeof(int) * n);//(int *)强转类型  sizeof(int)分配的内存大小 *n元素个数

    char *str = malloc(8);

    strcpy(str, ”iPhone”);

    free(str);//标记删除,不清除内容

    4.Student *p = malloc(sizeof(Student));//分配的内存大小要用 sizeof(Student)

    5.void * calloc(unsigned n,unsigned size);//n内存个数 size大小    calloc 清空内存

    6.void *realloc(void *p,unsigned newSize);//按新的长度重新分配

    7.void *memset(void *s , int c , size_t n);//memset(p , 0 , sizeof(int) * 5)  通常用于清除结构体或者数组数据

    链表

    1.struct stu{

    int num;      //数据域

    char * name;//数据域

    struct stu * next;//指针域

    }

    2.

    typedef struct stu{
        int num;
        char * name[20];
        
        struct stu * next;
    }Stu;
    int main(int argc, const char * argv[])
    {  Stu stu1 = {1,"SQJ",NULL};
        Stu stu2 = {2,"ZYL",NULL};
        Stu stu3 = {3,"LCD",NULL};
        
        stu1.next = &stu2;
        stu2.next = &stu3;
       // stu3.next = &stu1;//循环链表
        
        Stu * head = &stu1;//头结点

            while (head != NULL) {
            printf("%d:%s ",head->num,head->name);
            head = head->next;
        }

        return 0;
    }

    宏 枚举 const、static

    1.宏 :命名规则 纯大写(MAX) 或者 k+驼峰(kMax)

    主要用于把网络接口定义成宏

    #import <Foundation/Foundation.h>

    #define kMAX 99 //不要有分号  无参宏

    #defint k printf("hello,world ");//k 后面的原样  无参宏

    #define maxValue(A,B)   //换行

       A > B ? A : B//有参宏

    #define chengji(A,B) (A) * (B) //加()安全
    int main(int argc, const char * argv[])
    {   int a = kMAX;
        printf("a = %d ",a);

        k //不用分号 因为上面有

        printf("max = %d ",maxValue(3, 5));

        printf("ji = %d ",chengji(1 + 2, 2 + 3));

       

        return 0;
    }

    2.条件编译

    形式一:

    #ifdef 标识符
 代码段1


    #else
 代码段2


    #endif

    形式⼆:

    #ifndef 标识符
 代码段1


    #else
 代码段2


    #endif

    形式三:

    #if 常量表达式
 代码段1


    #else
 代码段2


    #endif

    3.枚举类型:   核⼼心作用:将⼈人能看懂的标识符与计 算机能看懂的数字建立对应关系。

    enum oper {
        JIA = 1,
        JIAN,//没赋值 递增加1
        CHENG,
        CHU,
    };
    int main(int argc, const char * argv[])
    {

    printf("%d %d %d %d ",JIA,JIAN,CHENG,CHU);

    return 0;
    }

    3.const:限定一个变量不能被修改  增强程序安全性(防修改) 比如struct strlen memcpy

    const int a = 8;//a不允许重新赋值

    (把类型去掉 看 )

    const int * p//p指向的内容不可以改

    int * const p//p的指向不可以改

    const int * const p//p的指向 p指向的内容都不可以改

    4.static:

    被static修饰的变量存储在全局区(静态区)。

    如果不赋值,默认为0.

    在main之前就初始化,只能初始化⼀次,但是能多次赋值。

  • 相关阅读:
    PHP 求多个数组的笛卡尔积,适用于求商品规格组合 【递归思想, 类似广度优先搜索】【原创】
    CCF推荐期刊会议
    SCI分区
    值和指针接收者的区别
    程序员练级攻略
    保险
    golang 有缓冲channel和无缓冲channel
    后台学习路线
    golang之反射
    atomic和mutex
  • 原文地址:https://www.cnblogs.com/lxllanou/p/3605438.html
Copyright © 2020-2023  润新知