#include #include #include int main() { int *arr; int *tmpArr; int *pCur; unsigned int i; arr = malloc(10*sizeof arr[0]); printf("arr adress:%p\narr ",(void*)arr); if(!arr) { printf("memory allocation error.\n"); return 1; } for(i=0; i<10; ++i) { arr[i] = i; printf("%d ",arr[i]); } printf("\npCur "); pCur = arr; printf("%d ", *pCur); pCur++; printf("%d \n", *pCur); //increase tmpArr = realloc(arr,12*sizeof arr[0]); if(!tmpArr) { printf("memory reallocation error (1).\n"); free(arr); return 1; } arr = tmpArr; printf("arr adress:%p\narr ",(void*)arr); arr[10]=10; arr[11]=11; for(i=0; i<12; ++i) printf("%d ",arr[i]); printf("\npCur "); pCur = arr; printf("%d ", *pCur); pCur++; printf("%d \n", *pCur); //shrink tmpArr = realloc(arr,8*sizeof arr[0]); if(!tmpArr) { printf("memory reallocation error (2).\n"); free(arr); return 1; } arr = tmpArr; printf("arr adress:%p\narr ",(void*)arr); for(i=0; i<8; ++i) printf("%d ",arr[i]); printf("\npCur "); pCur = arr; printf("%d ", *pCur); pCur++; printf("%d \n", *pCur); free(arr); return 0; } /* output: arr adress:0x556d786f4260 arr 0 1 2 3 4 5 6 7 8 9 pCur 0 1 arr adress:0x556d786f46a0 arr 0 1 2 3 4 5 6 7 8 9 10 11 pCur 0 1 arr adress:0x556d786f46a0 arr 0 1 2 3 4 5 6 7 pCur 0 1 */