In your code:
person * setName() {
person * array;
array = malloc (2 * sizeof(person));
array->name = strdup("Robert");
array++;
array->name = strdup("Jose");
return array;
}
you allocate space for two elements in the array and set arrayto indicate the first:
+
| array |
+
| array[1] |
+
array++, , . , ( , ):
+-------+ +----------+
| array | -+ | array[0] |
+-------+ | +----------+
+-> | array[1] |
+----------+
:
person * setName() {
person * array;
array = malloc (2 * sizeof(person));
array[0].name = strdup("Robert");
array[1].name = strdup("Jose");
return array;
}
. array . , array++ array-- , array :
person * setName() {
person * array;
array = malloc (2 * sizeof(person));
array->name = strdup("Robert");
array++;
array->name = strdup("Jose");
array--;
return array;
}
, , . , , , ( , , , array++ array = array + 1, ):
person * setName() {
person * array;
array = malloc (2 * sizeof(person));
(array+0)->name = strdup("Robert");
(array+1)->name = strdup("Jose");
return array;
}