2020-11-01

2020-11-01  本文已影响0人  恰我年少时

include <stdio.h>

include "stdlib.h"

//malloc(memory alloc)
//malloc(size:字节)返回地址,用指针存下分配的地址
//void * any_pointer,当要使用时,必须明确告诉这篇内存要存什么类型
//为什么呢?
//因为要明确定位访问位置
//int * pTemp = (int )malloc(1sizeof(int))强制类型转换
//限制的放缓存-在内存和缓存之间转移
/**

*/
//realloc
//free
int main() {
//今天做动态分配
//用malloc和realloc
//用free释放内存
//需要定义字符指针变量 保存分配的内存空间 -> 保存字符串
char * psentence=NULL;
int index=0;
while(1){
//如果是第一次要用malloc,之后用realloc
//要用一个数保存长度
//1.在后面加\0 2.方便操作
char ch=getchar();
if(ch=='\n')break;
if(index==0){psentence=(char )malloc(1sizeof(char));
psentence[index]=ch;}

    else{char *pTemp = realloc(psentence,(index+1)*sizeof(char));
    pTemp[index]=ch;}
    index++;
}
char * ptemp=realloc(psentence,(index+1)*sizeof(char));
if(ptemp==NULL){
    free(psentence);
    exit(EXIT_FAILURE);
}
psentence=ptemp;
psentence[index]='\0';

printf("%s",psentence);
printf("程序结束\n");
return 0;

}

上一篇下一篇

猜你喜欢

热点阅读