#include <stdio.h>
#include <string.h>

struct x{
int num;
char *str;
};

void disp(struct x data){
printf("%d, %s\n", data.num, data.str);
}

void main(){
char str[] = "abcde";
struct x data1 = { 1, str };
struct x data2;

data2 = data1;

disp(data1);
disp(data2);

*(data1.str) = 'A';

disp(data1);
disp(data2);
}
ポインタはコピー元とコピー先で同じアドレスを指しますので、
どちらか一方のポインタの指すデータを書き換えた場合は、
もう一方のデータも書き換えられることになります。

だそうです。いろいろ試したんですが、なぜか作動しません。