c 結構體直接賦值

2021-05-23 15:04:36 字數 927 閱讀 3399

通過對c語言的學習,相信大家都知道結構體能夠直接賦值,但是如果結構體內部是陣列,那情況又會如何呢?

結果是,還是能夠直接賦值,且是深拷貝,就像是c++實現的=過載一樣的效果。

以下是一段示例程式,將幫助你理解:

#include "stdio.h"

struct s_array;

//session 1:結構體能夠作為乙個物件返回

struct s_array towfold(struct s_array s)

return s;

}void show_s_array(struct s_array *s_ptr)

printf("/n");

}int main(int argc, char* argv)

lime = towfold(orange);

//session 2:結構體能直接進行賦值,是深拷貝,直接將結構體內部的陣列進行拷貝

//通過結構體和陣列的位址不同,可以看出這不是淺拷貝

lemon = lime;

printf("struct address: %d array address: %d/n", &orange, &orange.a);

show_s_array(&orange);

printf("struct address: %d array address: %d/n", &lime, &lime.a);

show_s_array(&lime);

printf("struct address: %d array address: %d/n", &lemon, &lemon.a);

show_s_array(&lemon);

//conclusion: 結構體變數能夠直接進行賦值,且內部的陣列也會自動進行拷貝

//函式能直接返回結構體

return 0;

}

c語言結構體可以直接賦值

from 下面是乙個例項 include struct foo foo1,foo2 define two structs with three different fields void struct assign void int main 我在ubuntu 13.04下使用gcc 4.7.3 編...

c語言結構體可以直接賦值

下面是乙個例項 include struct foo foo1,foo2 define two structs with three different fields void struct assign void int main 我在ubuntu 13.04下使用gcc 4.7.3 編譯執行得到...

陣列直接賦值給結構體

經過幾天的努力 終於把陣列 賦值給結構體,pragma pack push 儲存原對齊並設定新的位元組對齊 pragma pack 1 typedef struct tnettopologyrecord nettopologyrecord,pnettopologyrecord pragma pack...