标签:style blog class code c ext
作者 :卿笃军
很多时候,我们不知道要开辟多大的空间,但是我们又想实现无限制的输入~~~
这时候,就需要用到动态空间的开辟了。
先简绍2个函数: malloc() , realloc()
函数名:malloc
原型:externvoid *malloc(unsigned int num_bytes);
功能:在堆中开辟num_bytes个字节的空间
函数名:realloc
原型:externvoid *realloc(void *mem_address, unsigned intnewsize);
参数:
mem_address : 需要追加空间的首地址
newsize : 需要将空间追加到多大(是指追加后总共的大小,不是指要追加的大小)
realloc()使用注意:
实例:动态输入字符串
#include <stdio.h> #include <stdlib.h> int main() { char ch,*p = (char *)malloc(sizeof(char)); //预开辟一个空间 int count = 0; while ((ch = getchar()) != ‘\n‘) { p[count] = ch; ++count; //记录需要开辟空间数 p = (char *)realloc(p,(count+1)*sizeof(char));//开辟空间(realloc返回的地址不一定是原来的地址) } //所以这里最好用p[count],而不使用++p; p[count] = ‘\0‘; //注意尾部 puts(p); free(p); p = NULL; return 0; }
标签:style blog class code c ext
原文地址:http://blog.csdn.net/qingdujun/article/details/25598697