#include <stdio.h>
#include <stdlib.h>
// core data structure
struct Point
{
float x;
float y;
float z;
};
// function that allocates space for our array and fills it with dummy values
void fill_xyz_list(struct Point **xyz_list_ptr, int list_size)
{
// allocate memory for 100 Point structs
*xyz_list_ptr
= realloc(*xyz_list_ptr
, sizeof(struct Point
)*list_size
);
// set values for each member
int i;
for (i=0; i<list_size; i++)
{
(*xyz_list_ptr)[i].x = i + 0.1;
(*xyz_list_ptr)[i].y = i + 0.2;
(*xyz_list_ptr)[i].z = i + 0.3;
}
}
int main()
{
struct Point *xyz_list = NULL; // our array of (x, y, z)
int list_size; // our array size
int i;
// set list size
list_size = 10;
// fill xyz_list array with dummy values
fill_xyz_list(&xyz_list, list_size);
// print all members
for (i=0; i<list_size; i++)
{
printf("xyz_list[%d]: x=%.2f, y=%.2f, z=%.2f\n", i
, xyz_list
[i
].
x, xyz_list
[i
].
y, xyz_list
[i
].
z); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIGNvcmUgZGF0YSBzdHJ1Y3R1cmUKc3RydWN0IFBvaW50CnsKICAgIGZsb2F0IHg7CiAgICBmbG9hdCB5OwogICAgZmxvYXQgejsKfTsKCi8vIGZ1bmN0aW9uIHRoYXQgYWxsb2NhdGVzIHNwYWNlIGZvciBvdXIgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggZHVtbXkgdmFsdWVzCnZvaWQgZmlsbF94eXpfbGlzdChzdHJ1Y3QgUG9pbnQgKip4eXpfbGlzdF9wdHIsIGludCBsaXN0X3NpemUpCnsKICAgIC8vIGFsbG9jYXRlIG1lbW9yeSBmb3IgMTAwIFBvaW50IHN0cnVjdHMKICAgICp4eXpfbGlzdF9wdHIgPSByZWFsbG9jKCp4eXpfbGlzdF9wdHIsIHNpemVvZihzdHJ1Y3QgUG9pbnQpKmxpc3Rfc2l6ZSk7CgogICAgLy8gc2V0IHZhbHVlcyBmb3IgZWFjaCBtZW1iZXIKICAgIGludCBpOwogICAgZm9yIChpPTA7IGk8bGlzdF9zaXplOyBpKyspCiAgICB7CiAgICAgICAgKCp4eXpfbGlzdF9wdHIpW2ldLnggPSBpICsgMC4xOwogICAgICAgICgqeHl6X2xpc3RfcHRyKVtpXS55ID0gaSArIDAuMjsKICAgICAgICAoKnh5el9saXN0X3B0cilbaV0ueiA9IGkgKyAwLjM7CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgc3RydWN0IFBvaW50ICp4eXpfbGlzdCA9IE5VTEw7IC8vIG91ciBhcnJheSBvZiAoeCwgeSwgeikKICAgIGludCBsaXN0X3NpemU7IC8vIG91ciBhcnJheSBzaXplCiAgICBpbnQgaTsKCiAgICAvLyBzZXQgbGlzdCBzaXplCiAgICBsaXN0X3NpemUgPSAxMDsKCiAgICAvLyBmaWxsIHh5el9saXN0IGFycmF5IHdpdGggZHVtbXkgdmFsdWVzCiAgICBmaWxsX3h5el9saXN0KCZ4eXpfbGlzdCwgbGlzdF9zaXplKTsKCiAgICAvLyBwcmludCBhbGwgbWVtYmVycwogICAgZm9yIChpPTA7IGk8bGlzdF9zaXplOyBpKyspCiAgICB7CiAgICAgICAgcHJpbnRmKCJ4eXpfbGlzdFslZF06IHg9JS4yZiwgeT0lLjJmLCB6PSUuMmZcbiIsIGksIHh5el9saXN0W2ldLngsIHh5el9saXN0W2ldLnksIHh5el9saXN0W2ldLnopOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==
xyz_list[0]: x=0.10, y=0.20, z=0.30
xyz_list[1]: x=1.10, y=1.20, z=1.30
xyz_list[2]: x=2.10, y=2.20, z=2.30
xyz_list[3]: x=3.10, y=3.20, z=3.30
xyz_list[4]: x=4.10, y=4.20, z=4.30
xyz_list[5]: x=5.10, y=5.20, z=5.30
xyz_list[6]: x=6.10, y=6.20, z=6.30
xyz_list[7]: x=7.10, y=7.20, z=7.30
xyz_list[8]: x=8.10, y=8.20, z=8.30
xyz_list[9]: x=9.10, y=9.20, z=9.30