动态数组+realloc函数即可,例子:
int *pn=(int *)malloc(5*sizeof(int)); printf("%p\n",pn);
for(i=0; i<5; i++)
scanf("%d",&pn[i]);
pn=(int *)realloc(pn,10*sizeof(int));
追问还没学过这个,能解释一下上面的各行什么意思吗
追答int *pn=(int *)malloc(5*sizeof(int));//这个是动态分配5个数字大小的数组
pn=(int *)realloc(pn,10*sizeof(int));这个是在原来分配的地址上,重新分配10个数字大小的数组,相当于原来的数组变大了
追问我是想让它
我输入几个数,它就读取几个数
比如 输入11 22 33 44 55
它就会 scanf上面5个数
追答晕,数组不负责读入数据,只负责保存数据,既然你数据长度不固定,就必须用动态数组
直接用c++的vector得了,方便、简单:
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> vint;
int data;
while(cin>>data) {
vint.push_back(data);
}
return 0;
}
追问可能我表达不太好。。。。就是 保存数据
那个程序怎么写啊C++没学。。。。
追答#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int *a;
int n=0;
int size = 5;
int data;
a = (int*)malloc(size*sizeof(int));
while(scanf("%d", &data)!=EOF) {
if(n==size) {
size+=5;
a = realloc(a,size*sizeof(int));
}
a[n++] = data;
}
return 0;
}