『壹』 在C語言中.結構體變數之間可以相互賦值嗎
結構體變數直接賦值,就是其本身內存地址空間,按照地址分布直接賦值。
所以兩個一樣的結構變數可以直接賦值。
但是如果結構成員中有指針,且指針指向的地址大小不一樣,是不能直接賦值的。
『貳』 結構體什麼時候可以直接賦值C
在聲明的時候和後續賦值略有不同,在C語言中是兩種處理方法。
如果有結構體
struct test
{
int a;
char c;
int b;
};
定義的時候,可以
struct test var = {1,'c', 2};
這樣初始化,結果為var.a = 1, var.c = 'c', var.b = 2;
但是如果後續賦值
var = {1,'c', 2};
就會報錯。因為在C語言中不支持這種形式的操作。
不過可以取巧轉換一下,改成
var = (struct test){1,'c', 2};
這樣就可以了。 在這種情況下,系統會申請一個臨時變數,並初始化為該值,再對var進行賦值。而同類型結構體之間賦值操作是C語言規則允許的。