动态分配内存练习

来源:互联网 发布:好听的网络名字女生 编辑:程序博客网 时间:2024/06/08 14:19

     今天看完了吉大C语言第40讲,自己尝试写了下。

   

#include <stdio.h>#define NODSIZE sizeof(int)+sizeof(char*)#define INTSIZE sizeof(int)#define ERROR {printf("ERROR\n");return(0);}main(){    char *p,*q,*first;    int i;    p=(char*)malloc(NODSIZE);first=p;    for(i=0;i<10;i++)    {        if((p=(char*)malloc(NODSIZE))==NULL) ERROR        else{        *(int*)p=i;        p+=INTSIZE;        q=(char*)malloc(NODSIZE);        *(char**)p=q;        p=q;        }    }    p=first;    for(i=0;i<10;i++)    {        printf("%d\n",*p);        p+=INTSIZE;        p=*(char**)p;    }}



很遗憾,不懂为什么加了if((p=(char*)malloc(NODSIZE))==NULL) ERROR  会出现不正常数值。删掉后,正常了。

 

#include <stdio.h>#define NODSIZE sizeof(int)+sizeof(char*)#define INTSIZE sizeof(int)#define ERROR {printf("ERROR\n");return(0);}main(){    char *p,*q,*first;    int i;    p=(char*)malloc(NODSIZE);first=p;    for(i=0;i<10;i++)    {        *(int*)p=i;        p+=INTSIZE;        q=(char*)malloc(NODSIZE);        *(char**)p=q;        p=q;    }    p=first;    for(i=0;i<10;i++)    {        printf("%d\n",*p);        p+=INTSIZE;        p=*(char**)p;    }}


 

 

原创粉丝点击