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

2021-06-08 18:22:14 字數 975 閱讀 6949

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;

typedef結構體指標變數再去定義變數什麼意思

driverextension是一個你自己命名的結構體的名字 看起來是驅動拓展?結構體裡的結構是自己定義的,不過這個結構體貌似是引用了另一個結構體。你說的pdriver extension driverextension就是這樣定義結構體的,沒有問題 typedef是自定義型別,相當於,用pdriv...

c程式設計題定義結構體變數包括年月日計算該

include stdafx.h include using namespace std struct 定義結構體型別 無名 date 定義結構體變數 int main if date.year 4 0 date.year 100 0 3 cout 月是 中的第 c語言實現如下 include vo...

定義結構體變數,包括年,月,日。計算該日在本年中是第幾天。寫days函式,實現其運算

struct time s int days struct time s ptime 每個月的天數 int year int loop int day 0 if ptime null year ptime year 閏年 if year 4 0 year 100 0 year 400 0 for l...