最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

嵌入式C語(yǔ)言學(xué)習(xí)---類型修飾符

2023-08-27 21:04 作者:LeafChengahjj  | 我要投稿

一、類型修飾符可以修飾變量存放的范圍,對(duì)內(nèi)存存放資源位置的限定

類型修飾符有:

auto? ?register? static? const? extern? volatile


1.auto 相當(dāng)于把變量放在可讀可寫(xiě)的內(nèi)存區(qū)域,也是最常見(jiàn)的!

例如: auto int a;

如果這個(gè)區(qū)域用{ }包圍,表示在??臻g!


2.register

限制變量定義在寄存器上的修飾符,一些快速訪問(wèn)的變量可以用register

register int a;

編譯器會(huì)盡量的安排CPU的寄存器去存放這個(gè)4個(gè)字節(jié)的,如果寄存器不足時(shí),a還是放在內(nèi)存(存儲(chǔ)器)中。

&(取地址符號(hào))對(duì)register不起作用

內(nèi)存【存儲(chǔ)器】? ? ?? 寄存器

Ox100? ? ? ? ? ? ? ? ? ? ? RO,R2

例如:

#include <stdio.h>

int main()

{

register int a ;

a= 0x10;

printf ("the a is %dn^,&a) ;

return 0;

}

程序運(yùn)行的結(jié)果是:

error: address of register variable 'a’ requested

說(shuō)明給register int a 取地址出錯(cuò)了。


3.stati

靜態(tài)

應(yīng)用場(chǎng)景:

修飾3種數(shù)據(jù):

1)、函數(shù)內(nèi)部的變量

int fun()

{

int a; ===> static int a;

}

2)、函數(shù)外部的變量

int a; ====> static int a;

int fun()

{

}

3)、函數(shù)的修飾符

int fun();===> static int fun();


4.extern

外部聲明


5.const

常量的定義

修飾只讀的變量

const int a= 100;

但是還是可以通過(guò)其他方式修改變量a的值


6.volatile

告知編譯器編譯方法的關(guān)鍵字,不優(yōu)化編譯,在嵌入式底層用的較多

修飾變量的值的修改,不僅僅可以通過(guò)軟件,也可以通過(guò)其他方式(硬件,外部的用戶)

例如:int a = 100;

while( a==100 );

mylcd();

---------------------------

匯編假設(shè)如下:

[a] : a的地址

f1: LDR RO, [a]

f2: CMP R0, #100

f3: JMPeq f1 (沒(méi)有優(yōu)化會(huì)跳轉(zhuǎn)到f1,進(jìn)行循環(huán),但是和內(nèi)存打交道,速度相對(duì)慢)

--->JMPeq f2(編譯的過(guò)程中會(huì)自動(dòng)優(yōu)化,直接跳到f2進(jìn)行循環(huán))

f4: mylcd();

但是往往可能因?yàn)橛|碰了外部的鍵盤(pán)修改了a的值,這樣的優(yōu)化就會(huì)有問(wèn)題,所以此種情況下,應(yīng)該要使用volatile?int a = 100;




嵌入式C語(yǔ)言學(xué)習(xí)---類型修飾符的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
维西| 中阳县| 万源市| 青州市| 崇左市| 汤阴县| 长汀县| 东宁县| 惠安县| 平定县| 延庆县| 鹤庆县| 沈丘县| 如东县| 道真| 澄迈县| 高唐县| 湘西| 阳江市| 锦州市| 澎湖县| 昭觉县| 卓资县| 桐乡市| 屯昌县| 隆回县| 台南市| 宁化县| 南江县| 葵青区| 五常市| 龙川县| 临沂市| 咸丰县| 文安县| 永定县| 曲周县| 三河市| 翁牛特旗| 高平市| 昭苏县|