ใน C การ assign struct ทำ shallow copy แต่ถ้า member เป็น array (static allocation) จะทำ deep copy อัตโนมัติ
ตัวอย่าง
typedef struct {
int roll;
char name[128]; // static array
} student_t;
student_t s1 = {1, "tom"};
student_t s2 = s1; // deep copy สำหรับ name array
s2.name[0] = 'T'; // s1 ไม่ได้รับผลกระทบ
ผลลัพธ์
s1: roll=1, name="tom" s2: roll=1, name="Tom"
ข้อยกเว้น
ถ้า member เป็น pointer (dynamic allocation) จะเป็น shallow copy ต้อง copy เองด้วย malloc+memcpy