分享

15W4K58S4 实验3:空指针与位变量

 360tsgyd 2018-06-26

实验笔记3

电路图如实验1

关于void类型的指针:

定义可以指向任何类型变量的指针,即定义无类型通用指针void

void *pvoid;  

void指针的使用:
  
//如果有三个变量
   
char  a=1;
    
int   b=2;
    
float  c=3;

     
//定义无类型指针
   
void *pvoid;

     //将指针指向char 型变量a
​   
pvoid=&a; 

//void指针进行强制类型转换,之后对a重新赋值

//(char *)pvoid   是强制类型转换,

//*((char *)pvoid) 转换之后再引用

   *((char *)pvoid)=10;

 

//显示变量a的值,对void指针类型要做强制类型转换

   printf("chara=%bd\n",*((char *)pvoid));

 

//将指针指向int  型变量b

   pvoid=&b;

//void指针进行强制类型转换,之后对b重新赋值

   *((int *)pvoid)=20;

printf("intb=%d\n",*((int *)pvoid));

 

//将指针指向float 型变量c

   pvoid=&c;

//void指针进行强制类型转换,之后对c重新赋值

   *((float *)pvoid)=30;

   printf("floatc=%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;

 

//定义特殊功能寄存器P00位为LED

sbit LED0=P0^0;


//现在,想在3a.c中使用这些变量,首先顶一个与3a.c对应的头文件3a.h,在其中输入

#ifndef  _3a_c_

#define  _3a_c_
​    .
​    .
​    .
​    .
 
​   
#endif
​   
//这样做是为了避免重复编译
 

#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。


​实验效果:

 
​ 源代码下载地址:https://pan.baidu.com/s/1JCpwAhm30BszBVLKfd-Alw

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多