#include
#include
/*結構體變數的值是整個結構體。結構體變數名就是變數名。
象int a一樣,只是printf 處理不了結構體。通過 printf
輸出結構體,結果是沒有意義的(整個結構體複製堆疊中,按
照對應的格式輸出)。取位址要用&,不用鑽牛角尖,不直接
輸出就行了*/
typedef
struct
data2;
typedef
struct
data1;
void
test01()
;printf
("長度=%d\n"
,sizeof
(stu));
printf
("a的位址%p\n"
,&stu.a)
;printf
("b的位址%p\n"
,&stu.b)
;printf
("d的位址%p\n"
,&stu.c.d)
;printf
("e的位址%p\n"
,&stu.c.e)
;printf
("f的位址%p\n"
,&stu.f);}
/*結果
a a a a
b b d d
e f
*/void
test02()
;char
*p =
&stu;
printf
("d的值是%c\n",*
(short*)
(p +2)
);//(short*)p->c是錯的,乙個char型指標不能指向結構體成員
}void
test03()
;printf
("%8x\n"
, li)
;//printf("%x\n", *li);是錯的, * 操作的只能是指標
printf
("%p\n"
,&li)
;printf
("%8x\n",*
(int*)
&li)
;}
陣列名是作為記憶體中固定不可修改的位址常 量而存在,不可以直接賦值。
而結構體相當於int,double之類的系統內定型別,代表了一段記憶體空間的內容。是可以整體賦值的,結構體中的陣列,在結構體賦值的過程中,也是可以針對每個元素一一賦值的。
c語言中結構體型別變數型別,結構體變數名賦值
結構體的詳情參考本文件 這幾天看圖用領接表儲存圖時候,開始實現的時候發現對結構體的變數名賦值有些疑惑,疑惑的地方查了下,留做備份 此宣告宣告了擁有3個成員的結構體,分別為整型的a,字元型的b和雙精度的c 同時又宣告了結構體變數s1 這個結構體並沒有標明其標籤 struct s1 此宣告宣告了擁有3個...
C語言變數名和位址的關係(一)
變數名不佔空間 變數 用來標識 identify 一塊記憶體區域,這塊區域的值一般是可以更改的,這就是它 變 的由來,但是我們可以通過使用如const等一些修飾符號來限定這一記憶體區域的操作特性 characteristic 即變數的操作特性。用const修飾的使變數不能更改的就和常量一樣的變數叫做...
C語言變數名和位址的關係?
變數 用來標識 identify 一塊記憶體區域,這塊區域的值一般是可以更改的,這就是它 變 的由來 但是我們可以通過使用如const等一些修飾符號來限定這一記憶體區域的操作特性。用const修飾的使變數不能更改的就和常量一樣的變數叫做常變數。變數名 是乙個識別符號 identifier 用來指代一...