結構體變量名被賦值時,?不是賦值的地址,而是執行對整個結構體內容的復制(值拷貝)?
直接賦值是成員級復制?
當使用?s2 = s1;
?形式的賦值時(其中?s1
?和?s2
?是同類型結構體變量),系統會?逐成員復制??s1
?中的所有數據到?s2
,而非傳遞地址。賦值后兩個變量擁有相同內容,但占據獨立的內存空間。
如下示例:
struct Student s1 = {"Tom", 20};
struct Student s2;
s2 = s1; // 復制 s1 的所有成員值到 s2
printf("s1 addr=%p, s2 addr=%p", &s1, &s2); // 輸出不同地址
- ?結構體變量名?:代表整個數據實體,賦值操作觸發內存拷貝。
- 指針變量?:存儲地址,賦值如?
p = &s1;
?僅傳遞地址,不復制數據