实验笔记3 电路图如实验1
关于void类型的指针: 定义可以指向任何类型变量的指针,即定义无类型通用指针void void *pvoid;
void指针的使用: //对void指针进行强制类型转换,之后对a重新赋值 //(char *)pvoid 是强制类型转换, //*((char *)pvoid) 转换之后再引用 *((char *)pvoid)=10;
//显示变量a的值,对void指针类型要做强制类型转换 printf("char型a=%bd\n",*((char *)pvoid));
//将指针指向int 型变量b pvoid=&b; //对void指针进行强制类型转换,之后对b重新赋值 *((int *)pvoid)=20; printf("int型b=%d\n",*((int *)pvoid));
//将指针指向float 型变量c pvoid=&c; //对void指针进行强制类型转换,之后对c重新赋值 *((float *)pvoid)=30; printf("float型c=%f\n",*((float *)pvoid));
在多个文件中使用sbit 和bit 位变量 在某一个工程中可以包含若干个.c文件,如果在一个文件中定义了位变量,那么在其它文件中如何引用它们呢? 例如,在一个工程中包含了3.c 和3a.c两个文件,首先在3.c中定义位变量: bit irflag=0; //定义简单位变量 int bdata bdat; //在可位寻址区定义整型变量 char bdata bary[4]; //在可位寻址区定义字符型数组
//在可位寻址的基础上定义位变量 //定义整型数bdat的最低位和最高位 sbit mybit0=bdat^0; sbit mybit15=bdat^15;
//定义字符数组元素0的第7位和3的第7位 sbit Ary07=bary[0]^7; sbit Ary37=bary[3]^7;
//定义特殊功能寄存器P0的0位为LED灯 sbit LED0=P0^0; //现在,想在3a.c中使用这些变量,首先顶一个与3a.c对应的头文件3a.h,在其中输入 #ifndef _3a_c_ #define _3a_c_ #ifndef _3a_c_ #define _3a_c_ #include "STC15W4K.H" //包含头文件,里面有特殊功能寄存器的定义
//定义LED灯 sbit LED0=P0^0;
//对于已经在其它文件定义过的位变量,使用外部变量extern说明符 extern bit irflag; //定义过的简单位变量 extern bit mybit0; //可位寻址区的int型变量的最低位 extern bit mybit15; //可位寻址区的int型变量的最高位 extern bit Ary07; //可位寻址区的char 型数组0号元素的第7位 extern bit Ary37; //可位寻址区的char 型数组3号元素的第7位
void output(void); #endif 头文件其实就相当于各个源程序文件的接口,把可以被别的文件使用的变量和函数在头文件中声明。变量前要加关键字extern。 函数声明前不需要extern关键字。因为在头文件中声明的函数,缺省情况下都是整个工程中可见的。 如果不希望被其它文件看到,可以在定义函数的时候加关键字static。
![]()
|
|