實(shí)驗(yàn)筆記3 電路圖如實(shí)驗(yàn)1
關(guān)于void類型的指針: 定義可以指向任何類型變量的指針,即定義無類型通用指針void void *pvoid;
void指針的使用: //對(duì)void指針進(jìn)行強(qiáng)制類型轉(zhuǎn)換,之后對(duì)a重新賦值 //(char *)pvoid 是強(qiáng)制類型轉(zhuǎn)換, //*((char *)pvoid) 轉(zhuǎn)換之后再引用 *((char *)pvoid)=10;
//顯示變量a的值,對(duì)void指針類型要做強(qiáng)制類型轉(zhuǎn)換 printf("char型a=%bd\n",*((char *)pvoid));
//將指針指向int 型變量b pvoid=&b; //對(duì)void指針進(jìn)行強(qiáng)制類型轉(zhuǎn)換,之后對(duì)b重新賦值 *((int *)pvoid)=20; printf("int型b=%d\n",*((int *)pvoid));
//將指針指向float 型變量c pvoid=&c; //對(duì)void指針進(jìn)行強(qiáng)制類型轉(zhuǎn)換,之后對(duì)c重新賦值 *((float *)pvoid)=30; printf("float型c=%f\n",*((float *)pvoid));
在多個(gè)文件中使用sbit 和bit 位變量 在某一個(gè)工程中可以包含若干個(gè).c文件,如果在一個(gè)文件中定義了位變量,那么在其它文件中如何引用它們呢? 例如,在一個(gè)工程中包含了3.c 和3a.c兩個(gè)文件,首先在3.c中定義位變量: bit irflag=0; //定義簡(jiǎn)單位變量 int bdata bdat; //在可位尋址區(qū)定義整型變量 char bdata bary[4]; //在可位尋址區(qū)定義字符型數(shù)組
//在可位尋址的基礎(chǔ)上定義位變量 //定義整型數(shù)bdat的最低位和最高位 sbit mybit0=bdat^0; sbit mybit15=bdat^15;
//定義字符數(shù)組元素0的第7位和3的第7位 sbit Ary07=bary[0]^7; sbit Ary37=bary[3]^7;
//定義特殊功能寄存器P0的0位為LED燈 sbit LED0=P0^0; //現(xiàn)在,想在3a.c中使用這些變量,首先頂一個(gè)與3a.c對(duì)應(yīng)的頭文件3a.h,在其中輸入 #ifndef _3a_c_ #define _3a_c_ #ifndef _3a_c_ #define _3a_c_ #include "STC15W4K.H" //包含頭文件,里面有特殊功能寄存器的定義
//定義LED燈 sbit LED0=P0^0;
//對(duì)于已經(jīng)在其它文件定義過的位變量,使用外部變量extern說明符 extern bit irflag; //定義過的簡(jiǎn)單位變量 extern bit mybit0; //可位尋址區(qū)的int型變量的最低位 extern bit mybit15; //可位尋址區(qū)的int型變量的最高位 extern bit Ary07; //可位尋址區(qū)的char 型數(shù)組0號(hào)元素的第7位 extern bit Ary37; //可位尋址區(qū)的char 型數(shù)組3號(hào)元素的第7位
void output(void); #endif 頭文件其實(shí)就相當(dāng)于各個(gè)源程序文件的接口,把可以被別的文件使用的變量和函數(shù)在頭文件中聲明。變量前要加關(guān)鍵字extern。 函數(shù)聲明前不需要extern關(guān)鍵字。因?yàn)樵陬^文件中聲明的函數(shù),缺省情況下都是整個(gè)工程中可見的。 如果不希望被其它文件看到,可以在定義函數(shù)的時(shí)候加關(guān)鍵字static。
![]()
|
|