程序=数据结构+算法
数据结构
了解malloc与realloc的用法
申请一块存储:
一个空指针 type * p;
p = (类型)mallo(sizeof(type));
原基础上加一储存,设原来已有n个元素:
p = (type) realloc(p,(n+1)sizeof(int));
无限申请内存:
int mian (){
int* p;
//int size=0;
while(1){
int num;
scanf("%d",&num);
if(p==NULL){
p = (int*)malloc(sizeof(int));
++size;
}else{
p=(int*)realloc(p,(size+1)*sizeof(int));
++size;
}
}
}
注:realloc(NULL,size) = malloc(size)
realloc(p,0) = free(p);
无限申请内存并存入元素,直到ctrl+d跳出:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(){
int* p=NULL;
int size=0;
while(true){
int num;
if(EOF == scanf("%d",&num)) break;
// if(p==NULL){
// p = (int*)malloc(sizeof(int));
// *p = num;
// ++size;
//}else{
p = (int *)realloc(p,(size+1)*sizeof(int));
p[size] = num;
++size;
//}
}
}
倒序遍历上面的存储
for(int i=0;i<size;++i){
printf("%d ",p[size-1-i]);
}
printf("\n");
free(p);
p=NULL;
return 0;