keil中結構體變數能定義位變數嗎怎麼定義

時間 2021-06-08 18:21:36

1樓:藏在水中的人

位結構是c51語言中的一種特殊結構,可以用於訪問一個位元組或字的多個位。位結構一般形式如下。

struct 位結構名

位結構變數;

其中,struct為關鍵字,位結構資料型別必須是整型int(unsigned或signed);整形常熟必須是非負的整數,範圍是0~15,用於表示有多少位,即表示二進位制位的個數,變數名是可選項,可以省略。位結構的定義,例項如下。

struct

bit;

位結構成員的訪問與結構成員的訪問相同,例如訪問上列位結構中的lbit成員可寫成如下形式

bit.lbit

在使用位結構時,應注意以下幾點。

1、位結構中的成員必須是int,但可以定義為unsigned或者signed。

2、當位結構成員長度為1時,c51語言將其認為是unsigned型別。

3、位結構總長度(位數)是各個位成員定義的位數之和,可以超過兩個位元組。

4、位結構中的成員不能使用陣列和指標,但位結構變數可以是陣列和指標。如果是指標,其成員訪問方式同結構指標。

5、位結構可以成為巢狀式結構的成員,與其他結構成員一起使用,示例如下。

struct student;

2樓:

keil的結構體與標準c的結構體一樣,想實現位變數只能通過位域(bit field),也就是樓上貼出來的那一大堆。

需要注意的是位域其實是通過對結構體變數反覆進行按位運算取出的,執行效率上比較低下。如果你期望實現效率很高的位成員操作,對於51而言可以利用bdata,對於cortex-m3核而言可以利用位繫結對映(bit-banding)。

“位結構是c51語言中的一種特殊結構,”

這句話比較搞笑。位域是標準c的內容,不是c51的獨創。

3樓:

typdef structtest;

test abc

abc.a=1;

c語言定義結構體變數,C語言 定義結構體變數

樂跑小子 首先,定義一個結構的一般形式為 struct結構名 成員表由若干個成員組成,每個成員都是該結構的一個組成部分。對每個成員也必須作型別說明,其形式為 型別說明符 成員名 成員名的命名應符合識別符號的書寫規定。例如 struct stu 在這個結構定義中,結構名為stu,該結構由4個成員組成。...

定義了結構體,結構體有個成員變數是指標型別,而這個變數有是結構體,請問怎麼對這個指標初始化

例如有a,b兩個結構體,a中有b 在main中需要先初始化個b,完成b之後,然後呼叫a.b,這樣就可以完成了!如果直接呼叫a的話,有可能溢位 沒賦具體值時都給null就好 struct a a struct a malloc sizeof struct a memset a,0,sizeof str...

請問stm32中如何設定位變數??keil51中

都已經用上32位機了,不要死抱著8位機的那些老觀念不放。針對位的操作,用標準c的位域就可以。如果對效率方面有要求,或者要求實現原子級的操作,就用 attrib bitband 屬性將結構體成員宣告成位繫結操作即可。另外要注意,位繫結是m3 m4核心的特性。m0核心是不支援位繫結的。 keil51使用...