Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

Deep Copy of Struct Member Arrays ใน C


โครงสร้างช่วยให้เราสร้างประเภทข้อมูลที่กำหนดโดยผู้ใช้ สมาชิกโครงสร้างสามารถเป็นประเภทข้อมูลดั้งเดิมหรืออาจเป็นอาร์เรย์ของหน่วยความจำที่จัดสรรแบบสถิต เมื่อเรากำหนดตัวแปรโครงสร้างหนึ่งให้กับตัวแปรอื่น จะมีการคัดลอกแบบตื้น อย่างไรก็ตาม มีข้อยกเว้น ถ้าสมาชิกโครงสร้างเป็นอาร์เรย์ คอมไพเลอร์จะทำสำเนาลึกโดยอัตโนมัติ เรามาดูตัวอย่างกัน −

ตัวอย่าง

#include <stdio.h>
#include <string.h>
typedef struct student {
   int roll_num;
   char name[128];
}
student_t;
void print_struct(student_t *s) {
   printf("Roll num: %d, name: %s\n", s->roll_num, s->name);
}
int main() {
   student_t s1, s2;
   s1.roll_num = 1;
   strcpy(s1.name, "tom");
   s2 = s1;
   // Contents of s1 are not affected as deep copy is performed on an array
   s2.name[0] = 'T';
   s2.name[1] = 'O';
   s2.name[2] = 'M';
   print_struct(&s1);
   print_struct(&s2);
   return 0;
}

ผลลัพธ์

เมื่อคุณคอมไพล์และรันโค้ดด้านบน มันจะสร้างเอาต์พุตต่อไปนี้ -

Roll num: 1, name: tom
Roll num: 1, name: TOM