内存使用

//

//  main.c

//  内存使用

//

//  Created by zhangxueming on 15/6/8.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#include <stdio.h>

#include <stdlib.h>

#include <string.h>



//内存操作函数

//1.申请内存

//2.判断内存是否申请成功

//3.对申请到的内存初始化(可选)

//4.使用内存

//5.释放内存

//6.将指向该内存的指针赋值为NULL



//int main(int argc, const char * argv[]) {

//    char *pstr = (char *)malloc(100*sizeof(char));

//    if (!pstr) {

//        return -1;

//    }

//    memset(pstr, 0, 100);

//    scanf("%s", pstr);

//    printf("%s\n", pstr);

//    free(pstr);

//    pstr =NULL;

//    return 0;

//}



//内存清空函数

//void    *memset(void *mem, int c, size_t n);

//int main(int argc,const char *argv[])

//{

//    //printf("size = %ld\n", sizeof(void));

//    

////    int a[10]={1,2,3,4,5};

////    memset(a, 0, 40);

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

////        printf("%d", a[i]);

////    }

//    

//    char str[100]="hello world";

//    memset(str, 0, 100);

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

//        printf("%d", str[i]);

//    }

//    return 0;

//}



//

//void    *calloc(size_t count, size_t size);

//申请的内存空间大小 = count * size;



//利用malloc memset 实现calloc



void *mycalloc(size_t count, size_t size)

{

    void *p= malloc(count*size);

    if (!p) {

        return NULL;

    }

    memset(p, 0, count*size);

    return p;

}



//int main(int argc,const char *argv[])

//{

//    int *pscore =mycalloc(10, sizeof(int));

//    for(int i=0; i<10; i++)

//    {

//        //scanf("%d", &pscore[i]);

//        scanf("%d", pscore+i);

//    }

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

//        printf("%d ", *(pscore+i));

//    }

//    free(pscore);

//    pscore = NULL ;

//    return 0;

//}



//内存查找函数

//memchr

//void    *memchr(const void *dst, int c, size_t n);



//int main(int argc,const char *argv[])

//{

//    char str[100]="hello world";

//    

//    printf("%s\n", memchr(str, 'o', 100));

//

//    return 0;

//}





//修改内存大小

//realloc

//void    *realloc(void *, size_t);



//int main(int argc,const char *argv[])

//{

//    char *pstr = (char *)malloc(50*sizeof(char));

//

//    printf("%p\n", pstr);

//    

//    scanf("%s", pstr);

//    

//    pstr = realloc(pstr, 1000*sizeof(char));

//    

//    printf("%p\n", pstr);

//    

//    printf("%s\n", pstr);

//

//    return 0;

//}



//int main(int argc, const char *argv[])

//{

//    char *pstr=malloc(100*sizeof(char));

//    if (!pstr) {

//        return -1;

//    }

//    scanf("%s", pstr);

//    printf("%s\n", pstr);

//    

//    realloc(pstr, 0);//<==> free(pstr)

//    //free(pstr);//同一块内存不能被释放两次

//    pstr = NULL;

//    

//    

//    return 0;

//}



//int main(int argc,const char *argv[])

//{

//    char *pstr = realloc(NULL, 100);//<==> malloc(100)

//    if (!pstr) {

//        return -1;

//    }

//    scanf("%s", pstr);

//    printf("%s\n", pstr);

//    realloc(pstr, 0);

//    pstr = NULL;

//    return 0;

//}



#include <string.h>

//内存比较函数

//int     memcmp(const void *, const void *, size_t);



//int main(int argc,const char *argv[])

//{

//    char str1[20]="helloworld";

//    char str2[20]="helloaorld";

//    //int a[5]={1,3,5};

//    

//    int ret = memcmp(str1, str2, 20);

//    printf("ret = %d\n", ret);

//

//    return 0;

//}



//内存拷贝函数

//void    *memcpy(void *dst, const void *src, size_t n);

//dst 与src 指针指向的内存空间不能有重叠的部分



//int main(int argc,const char *argv[])

//{

//    char str1[100]="hello world";

//    char str2[100]={};

//    

//    str1[19]='A';

//    

//    memcpy(str2, str1, 20);

//    printf("str2 = %s\n", str2);

//    printf("str2[19]=%c\n", str2[19]);

//    return 0;

//}



//内存移动函数

//void    *memmove(void *dst, const void *src, size_t n);

//dst 与src 指向的内存空间可以重叠



//int main(int argc,const char *argv[])

//{

//    char str[100]="hello world";

//    

//    memmove(str, &str[1], 11);

//    printf("str = %s\n", str);

//    

//    return 0;

//}



//strstr



char *mystrstr(const char * src, const char *substr)

{

    while (*src) {

        char *tempstr = (char *)src;

        char *tempsubstr = (char *)substr;

        while (*tempstr==*tempsubstr) {

            tempsubstr++;

            tempstr++;

            if (*tempsubstr=='\0') {

                return (char *)src;

            }

        }

        src++;

    }

    return NULL;

}



//int main(int argc,const char *argv[])

//{

//    char *str1 = "hello worworld qianfeng";

//    printf("%s\n", mystrstr(str1, "world"));

//    return 0;

//}



//memmem

//void    *memmem(const void *mem, size_t size1, const void *submem, size_t size2)



//int main(int argc, const char *argv[])

//{

//    char *str="helloworldqianfeng";

//    

//    printf("%s\n",memmem(str, 18, "world", 5));

//    return 0;

//}





//把数字字符串转换成整型

//atoi

//atof



int main(int argc, const char *argv[])

{

    printf("%d\n", atoi("    123abc"));

    return 0;

}

 

你可能感兴趣的:(内存)