typedef struct mystruct{
int a;
char arr[10];
char *str;
}mystruct;
void f(void *data, int offset){
char *s = (char *)(data + offset);
printf("%s", s);
}
void g(void *data, int offset){
char *s = *(char **)(data+offset);
printf("%s", s);
}
int main(){
mystruct test;
test.a = 2;
test.str = malloc(100);
strcpy(test.arr, "Hello ");
strcpy(test.str, "World!");
f(&test, offsetof(mystruct,arr));
g(&test, offsetof(mystruct,str));
return 0;
}
我想知道为什么我需要两种不同的方式来打印字符串。在函数f中, (data + offset) 实际指向什么?它不是指向arr,它是指向字符串第一个元素的 char 指针吗?但是在函数g中, (data + offset) 也指向一个 char 指针。那么为什么必须使用两种不同的方法来完成相同的任务呢?