如何理解变量在C语言中的现定义后使用这一规则
发布网友
发布时间:2022-05-16 23:18
我来回答
共2个回答
热心网友
时间:2023-09-14 17:46
这个表示的是位域,表示变量所占得位数位结构是c51语言中的一种特殊结构,可以用于访问一个字节或字的多个位。位结构一般形式如下。
struct
位结构名
{
数据类型
变量名:
整形常数;
数据类型
变量名:
整形常数;
}位结构变量;
其中,struct为关键字,位结构数据类型必须是整型int(unsigned或signed);整形常熟必须是非负的整数,范围是0~15,用于表示有多少位,即表示二进制位的个数,变量名是可选项,可以省略。位结构的定义,实例如下。
struct
{
unsigned
lbit
:
8;
//lbit
占用低字节0~7共八位。
unsigned
hbit0
:
4;
//hbit0
占用高字节0~3共4位。
unsigned
hbit1
:
3;
//hbit1
占用高字节4~6共3位。
unsigned
hbit2
:
1;
//hbit2
占用高字节第7位。
}bit;
位结构成员的访问与结构成员的访问相同,例如访问上列位结构中的lbit成员可写成如下形式
bit.lbit
在使用位结构时,应注意以下几点。
1、位结构中的成员必须是int,但可以定义为unsigned或者signed。
2、当位结构成员长度为1时,c51语言将其认为是unsigned类型。
3、位结构总长度(位数)是各个位成员定义的位数之和,可以超过两个字节。
4、位结构中的成员不能使用数组和指针,但位结构变量可以是数组和指针。如果是指针,其成员访问方式同结构指针。
5、位结构可以成为嵌套式结构的成员,与其他结构成员一起使用,示例如下。
struct
student
{
char
*name;
int
num;
int
age;
char
*sex;
float
score;
unsigned
reister:1;
unsigned
pay:1;
};
热心网友
时间:2023-09-14 17:47
首先说先定义:给定义的变量分配一个地址
后使用:使用时到该变量所代表的地址区域去取值
比如:
int
a;//定义一个变量叫a
a
=
11;//给a赋值为11;也就是向a所指向地址的区域赋值11;
int
b;
b
=
a;//取出a的值赋给b;
假如a未定义直接使用的话,CPU就不知道该去哪儿取它所需要的值
同理
b没定义的话
a的值也不知道该赋给谁了?
有点抽象和不完善,不知道你有没理解!