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\n",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\n");//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\n",a);

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

 

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

    printf("ji = %d\n",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\n",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之前就初始化,只能初始化⼀次,但是能多次赋值。

posted @ 2014-03-17 16:56  lxl奋小斗  阅读(185)  评论(0编辑  收藏  举报