C 含陣列成員的結構體變數之間的賦值

2021-10-03 11:24:38 字數 548 閱讀 9694

含有陣列成員的結構體的變數之間可以進行賦值,示例如下:

#include

#define n 20

typedef

struct

hcode;

intmain

(void);

hc_arr[0]

= hc;

printf

("%s\n%d\n"

, hc_arr[0]

.cd, hc_arr[0]

.start)

;return0;

}

以上**在iso c90上編譯通過,並且能夠正常輸出

原因是

結構體描述的是的一塊連續記憶體的記憶體布局,同型別的乙個結構體變數給另乙個結構體變數賦值,使用等號編譯不會有任何問題,其效果顯然也和人直覺認為的一樣,拷貝對應記憶體。

文字**

也就是說,結構體描述的是一整塊連續的記憶體空間,即陣列成員的記憶體空間也被包含在結構體的記憶體空間中,進行賦值操作時,將相應記憶體位置上的內容進行拷貝即可。

結構體中的陣列成員的賦值問題

include using namespace std struct student int main 道理和以下語句錯誤的原因一樣,陣列名表示常量,不允許對常量賦值,所以常量不允許出現在 的左邊,當做左值出現。所以不能直接用字串賦值給陣列名。但請注意 可以在定義字元陣列的同時用字串給字元陣列賦初值...

筆試遇到的困惑 陣列成員變數 類變數的預設初始值

在程式設計時,有時候宣告陣列只宣告了陣列長度,沒有進行初始化int array new int 5 或者在類中宣告了全域性變數但是沒有初始化。這兩種情況下,陣列的元素和全域性變數其實是有預設值的。下面是各種型別陣列或者變數的預設值 byte,short和int型別的陣列或者成員變數預設值 0 lon...

為結構體的字元陣列成員賦十六進製制形式表示的字串

今天在為乙個結構體的unsigned char陣列賦十六進製制形式表示的字元時遇到問題了,如下 typedef struct int bits unsigned char x 2 unsigned char y 2 key 當需要定義並初始化乙個例項時,其中的陣列x,y均賦值為十六進製制形式表示的字...