我此刻正在尝试学习,但发送给我的文件不正确。我尝试修复了一些事情,但它开始了,然后它就崩溃了。我学习动态记忆,所以我不知道。这是realloc();
的代码 #include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand */
int main ()
{
int count=0,i;
int *stations=NULL,*ptrToStations=NULL;
for(i=1;i<=7;i++,count++)
{
ptrToStations=(int*)realloc(stations,count*sizeof(int));
if(ptrToStations!=NULL)//заделили сме памет
{ stations = ptrToStations;
ptrToStations[count]=i;}
}
for(i=0;i<7;i++)
printf("%d",stations[i]);
printf("\n");
//добавяне на 8 елемент
ptrToStations=(int*)realloc(stations,++count*sizeof(int));
if(ptrToStations!=NULL)//заделили сме памет
{ stations = ptrToStations;
ptrToStations [count-1]=count;}
for(i=0;i<count;i++)
printf("%d",stations[i]);
printf("\n");
int x=3;
//преместваме елементите с един назад
for(i=x;i<count;i++)
ptrToStations[i-1]=ptrToStations[i];
//премахване на 8 елемент
ptrToStations=(int*)realloc(stations,--count*sizeof(int));
if(ptrToStations!=NULL)//заделили сме памет
stations = ptrToStations;
for(i=0;i<count;i++)
printf("%d",stations[i]);
printf("\n");
free (ptrToStations);
free (stations);
return 0;
}
答案 0 :(得分:0)
你在这里遇到了几个问题
您的代码应该看起来像这样
#include <stdio.h> /* printf, scanf, NULL */
#include <stdlib.h> /* malloc, free, rand */
int main ()
{
int count=1,i;
int *stations=NULL,*ptrToStations=NULL;
for(i=1;i<=7;i++,count++){
ptrToStations=(int*)realloc(stations,count*sizeof(int));
if(ptrToStations != NULL) {
stations = ptrToStations;
ptrToStations[count-1]=i;
for(i=0;i<count;i++)
printf("%d",stations[i]);
printf("\n");
}
}
//добавяне на 8 елемент
ptrToStations=(int*)realloc(stations,++count*sizeof(int));
if(ptrToStations!=NULL){
stations = ptrToStations;
ptrToStations [count-1]=count;
}
for(i=0;i<count;i++)
printf("%d",stations[i]);
printf("\n");
int x=3;
//преместваме елементите с един назад
for(i=x;i<count;i++)
ptrToStations[i-1]=ptrToStations[i];
//премахване на 8 елемент
ptrToStations=(int*)realloc(stations,--count*sizeof(int));
if(ptrToStations!=NULL) {
stations = ptrToStations;
for(i=0;i<count;i++)
printf("%d",stations[i]);
printf("\n");
}
free (stations);
return 0;
}