我试图理解为什么以下代码可以编译并运行良好。我希望使用data
inside的任何分配都f
不会编译时出现 gcc 错误assignment of member ‘i’ in read-only object
。是否有某种异常,因为data.i
是动态分配的?
#include <stdio.h>
#include <stdlib.h>
struct a {
int *i;
};
void f(const struct a *data) {
data->i[0] = 55;
}
int main() {
struct a data;
data.i = malloc(2 * sizeof(int));
f(&data);
printf("%d\n", data.i[0]);
return 0;
}