Advanced Pointers
Dynamic Buffer
A dynamically allocated buffer can be filled through pointer arithmetic.
Dynamic Buffer
dynamic_buffer.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int count = ;
int *items = (int *)malloc((size_t)count * sizeof(int));
int *cursor = items;
int sum = 0;
for (int i = 0; i < count; i++) {
*cursor = i + 1;
sum += *cursor;
cursor++;
}
free(items);
printf("sum=%d\n", sum);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int count = ;
int *items = (int *)malloc((size_t)count * sizeof(int));
int *cursor = items;
int sum = 0;
for (int i = 0; i < count; i++) {
*cursor = i + 1;
sum += *cursor;
cursor++;
}
free(items);
printf("sum=%d\n", sum);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int count = ;
int *items = (int *)malloc((size_t)count * sizeof(int));
int *cursor = items;
int sum = 0;
for (int i = 0; i < count; i++) {
*cursor = i + 1;
sum += *cursor;
cursor++;
}
free(items);
printf("sum=%d\n", sum);
return 0;
}
heap buffer
`malloc` returns storage whose lifetime continues until `free`.
pointer cursor
A pointer can move across array elements while the original pointer is kept for cleanup.