初學C語言對於結構體變數名的一些想當然

2021-10-03 06:33:30 字數 1306 閱讀 3686

#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 用來指代一...