iOS入门(十二)动态内存分配

来源:互联网 发布:c语言的地位作用 编辑:程序博客网 时间:2024/06/05 13:02
栈      由编译器自动分配和释放,在函数体中定义的变量通常在栈上,先进后出,  
从高向低分配。 
堆      一般由程序员分配和释放  从低向高分配。一些分配内存的函数。
全局区(静态区) 初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另外一块区域。
常量区 
程序代码区      函数被调用时会从代码区取出,需要的参数以及函数体中的变量,会在栈中临时分配,函数结束时, 变量会被释放。
malloc     向系统申请分配  内存空间    eg : char * str = malloc(8)        char *str = malloc(8 sizeof(char)) ;
释放堆内存  :     free (   ) ; 不清除内容。
calloc      void *calloc(unsigned n , unsigned size ) ;
分配n个size 大小的空间。
realloc   void * realloc( void *p ;unsigned newsize ) ;
按新的长度重新分配内存。
memset  void *memset (void *s , int c , size_t n ) ;
s开始长度为n 的所有字节赋值为c 。
通常用于结构体和数组的数据清除。
memcpy  void *memcpy ( void *dest , const void * source , size _t n ) ;
从source 拷贝n个字节到dest 中。
memcmp    int memcmp ( const void * buf1, const void * buf2 , unsigned int count ) ;

1、输⼊入⼀一个数组长度,动态创建数 组,所有元素随机⽣生成,输出元素中 的最⼤大值。
2、有⼀一段⽂文本,将⽂文本中的所有单 词,存放到⼀一个字符串数组中。

void put10 (int * array , int count  )

{

    int *p = array ;

    for int i =  i < count  ;  i ++ ) {

        printf( " %d " , *(p+i));

    }

    printf( "\n");

}

void get10 ( int * array , int count  )

{

    int * p = array ;

    for int i =  i < count  ;  i ++ ) {

        scanf( "%d" , p+i) ;

    }

}

void dealArray ( int * array , int count  )

{

    int * max = array ;

    int * min  = array;

    int *p = array;

    for int i =  i < count ;  i ++ ) {

        if (*max < *p ) {

            max = p ;

        }

        p ++ ;

    }

    swap(min, array);

    for (int i =  i < count ;  i ++ ) {

        if (*min > *p ) {

            min = p ;

        }

        p ++ ;

    }

    swap(max, array+count -1);

}

void swap ( int * a , int * b )

{

    int temp = * a ;

    *a = *b ;

    *b = temp ;

}


//    int array[10] = {0} ;

//    get10(array, 10);

//    dealArray(array, 10);

//    put10(array, 10);




void put10 (int * array , int count  )

{

    int *p = array ;

    for ( int i = 0 ;  i < count  ;  i ++ ) {

        printf( " %d " , *(p+i));

    }

    printf( "\n");

}

void get10 ( int * array , int count  )

{

    int * p = array ;

    for ( int i = 0 ;  i < count  ;  i ++ ) {

        scanf( "%d" , p+i) ;

    }

}

void dealArray ( int * array , int count  )

{

    int * max = array ;

    int * min  = array;

    int *p = array;

    for ( int i = 0 ;  i < count ;  i ++ ) {

        if (*max < *p ) {

            max = p ;

        }

        p ++ ;

    }

    swap(min, array);

    for (int i = 0 ;  i < count ;  i ++ ) {

        if (*min > *p ) {

            min = p ;

        }

        p ++ ;

    }

    swap(max, array+count -1);

}

void swap ( int * a , int * b )

{

    int temp = * a ;

    *a = *b ;

    *b = temp ;

}


void changeArr(int *array, int count )

{

    for ( int i = 1 ;  i < count ;  i ++ ) {

        *(array+i) = *(array+i) / *array ;

    }

    *array = *array / *array ;

}


void chan(int * array , int count )

{

    for ( int i = 0 ;  i  < count /2  ;  i ++ ) {

        int temp = *(array+i) ;

        *(array+i) = *(array+count -1-i) ;

        *(array+count -i-1) = temp ;

    }

}


0 0
原创粉丝点击