标签: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