동적으로 할당 된 배열과 배열의 마지막 요소 위치를 나타내는 akt
및 max
의 두 변수가 있다고 가정합니다. 배열 각각. 두 개의 함수도 작성해야하므로 첫 번째 요소가 배열에 새 요소를 추가하고 충분한 공간이 없으면 배열을 배가 된 공간에 다시 할당합니다. 두 번째 기능은 어레이에 새로운 요소를 삽입하지만 배열을 재 할당하는, 그 크기는 하나의 내 코드 place.so 의해 크게되도록 그렇게 진행 :구조체 내에 동적으로 할당 된 배열을 인쇄 할 때 정의되지 않은 동작
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include <math.h>
struct DynArray
{
int *p, max, akt = 0;
};
struct DynArrayMin
{
int *p, max, akt = 0;
};
void dyn_arr_add(struct DynArray* d, int x)
{
if ((d->akt)>(d->max) - 1)
{
d->p = (int*)realloc(d->p, (d->max) * 2);
d->max *= 2;
}
d->p[d->akt] = x;
d->akt++;
}
void dyn_arr_min_add (struct DynArrayMin* d, int x)
{
if ((d->akt)>(d->max) - 1)
{
d->p = (int*)realloc(d->p, (d->max) + 1);
d->max++;
}
d->p[d->akt] = x;
d->akt++;
}
void main()
{
DynArray d;
DynArrayMin e;
int n, l, x,aa=0;
scanf("%d", &n);
d.max = n;
d.p = (int*)malloc(sizeof(int)*n);
e.max = n;
e.p = (int*)malloc(sizeof(int)*n);
do{
printf("enter number\n");
scanf("%d", &x);
dyn_arr_add(&d, x);
dyn_arr_min_add(&e, x);
aa++;
printf("want to enter another number; 0=no\n");
scanf("%d", &l);
} while (l != 0);
for (int i = 0; i < aa;i++)
printf("%d%d\n", d.p[i], e.p[i]);
free(e.p);
free(d.p);
system("pause");
return;
}
하지만 n
= 5로 시작하는 것 동적으로 할당 된 배열의 초기 크기가되고 1에서 8 사이의 숫자를 입력으로 사용하면 다음과 같은 결과가 나왔습니다. 11 22 33 44 55 66 77 88
그러나이 팝업 메시지는 this pop-up message과 그 뒤에 오는 것입니다. 팝업 메시지에서 "계속"을 클릭 한 후 출력을 클릭하십시오. 11 2-842203134 -33751037-33686019 -1414791683-1414812757 -1414812757-1414812757 66 77 88