青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

朗朗空間

我知道并不是 所有鳥兒都飛翔

  C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
  16 Posts :: 0 Stories :: 6 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團(tuán)隊(duì)

搜索

  •  

最新隨筆

最新評論

閱讀排行榜

評論排行榜

2.鏈接
一個(gè)C變量具有下列鏈接之一:
外部鏈接 (external linkage)
內(nèi)部鏈接 (internal linkage)
空鏈接 (no linkage)
具有代碼塊作用域或者函數(shù)原型作用域的變量具有空鏈接,意味著它們是由其定義所在的代碼塊或函數(shù)原型所私有的。
具有文件作用域的變量可能有內(nèi)部或者外部鏈接。
一個(gè)具有外部鏈接的變量可以在一個(gè)多文件程序的任何地方使用。
一個(gè)具有內(nèi)部鏈接的變量可以在一個(gè)文件的任何地方使用。
那怎樣知道一個(gè)文件作用域變量具有內(nèi)部鏈接還是外部鏈接?
你可以看看在外部定義中是否使用了存儲類說明符static:

int giants = 5;//文件作用域,外部鏈接
static int dodgers = 3;//文件作用域,內(nèi)部鏈接
int main ()
{
    ……
}

和該文件屬于同一程序的其他文件可以使用變量giants。
變量dodgers是該文件私有的,但是可以被該文件中的任一函數(shù)使用。

2.存儲時(shí)期
一個(gè)C變量有兩種存儲時(shí)期之一:
靜態(tài)存儲時(shí)期(static storage duration)和自動(dòng)存儲時(shí)期(automatic storage duration)。
如果一個(gè)變量具有靜態(tài)存儲時(shí)期,它在程序執(zhí)行期間將一直存在。
具有文件作用域的變量具有靜態(tài)存儲時(shí)期。
注意對于具有文件作用域的變量,關(guān)鍵字static表示鏈接類型,并非存儲時(shí)期。
因?yàn)樗械奈募饔糜蜃兞?,無論它具有內(nèi)部鏈接,還是具有外部鏈接,都具有靜態(tài)存儲時(shí)期。

具有代碼塊作用域的變量一般情況下具有自動(dòng)存儲時(shí)期。
當(dāng)程序進(jìn)入定義這些變量的代碼塊時(shí),將為這些變量分配內(nèi)存。
當(dāng)推出這個(gè)代碼塊時(shí),內(nèi)存將被釋放。
這樣,在一個(gè)函數(shù)調(diào)用結(jié)束后,它的變量所占用的內(nèi)存空間可以用來存儲下一個(gè)被調(diào)用函數(shù)的變量。

到現(xiàn)在我們所使用的局部變量都屬于自動(dòng)類型。

void bore (int number)
{
    
int index;
    
for (index = 0; index < number; index++)
    
{
        
puts ("They don't make them the way they used to.\n");
        
return 0;
    
}
}

總論:c使用作用域、鏈接和存儲時(shí)期來定義5中存儲類。
自動(dòng),寄存器、具有代碼塊作用域的靜態(tài)、具有外部鏈接的靜態(tài)、具有內(nèi)部鏈接的靜態(tài)
1.自動(dòng)變量
自動(dòng)變量具有自動(dòng)存儲時(shí)期、代碼塊作用域和空鏈接。
默認(rèn)情況下,在代碼塊或函數(shù)的頭部定義的任意變量都屬于自動(dòng)存儲類。
你可以顯示的使用關(guān)鍵字auto來表明一個(gè)變量為自動(dòng)變量,但我們一般不寫。

int main (void)
{
    
auto int plox;
}
 
int loop (int n)
{
    
int m// m的作用域
    
scanf ("%d", &m);
    
{
        
int i; // m和i的作用域
        
for (i=m; i < n; i++)
        
{
            
puts ("i is local to a sub-block\n");
        
}
    
}
    
    
return m// m的作用域, i已經(jīng)消失
}

如果在內(nèi)層代碼塊定義了一個(gè)具有和外層代碼塊便來那個(gè)同一名字的變量,將會怎樣?
(最好不要在你的代碼中這樣做)
這時(shí)內(nèi)層代碼塊將使用在內(nèi)層代碼塊中這個(gè)新定義的變量。
我們稱之為內(nèi)層定義覆蓋(hide)了外部定義,只有當(dāng)運(yùn)行離開內(nèi)層代碼塊是,外部變量才會重新恢復(fù)使用。

#include <stdio.h>
int main (void)
{
    
int x = 30;
    
printf ("x in outer block: %d\n", x);
    
{
        
int x = 77;
        
printf ("x in inner block: %d\n", x);
    
}
}

注意:
c99中規(guī)定,語句若為循環(huán)或者if語句的一部分,即使沒有使用{},也認(rèn)為是一個(gè)代碼塊。

#include <stdio.h>
int main (void)
{
    
int n = 10;
    
printf ("Initially, n = %d\n", n);
    
    
for (int n = 1; n < 3; n++)
        
printf ("loop : n = %d\n", n);
    
    
printf ("Initially, n = %d\n", n);
    
    
return 0;
}

注意:
除非您顯式地初始化自動(dòng)變量,否則它不會被自動(dòng)初始化。

int main (void)
{
    
int repid;
    
int tents = 5;
}

repid的初值則是先前占用分配給它的空間的任意值。不要指望這個(gè)值是0。

2.寄存器變量
通常,變量存儲在計(jì)算機(jī)內(nèi)存中。如果幸運(yùn),寄存器變量可以被存儲在CPU的寄存器中,這樣速度會更快。
在其它許多方面,它和自動(dòng)變量是一樣的。
通過使用存儲類型說明符register可以聲明寄存器變量。

int main (void)
{
    
register int quick;
}

我們說如果幸運(yùn)是因?yàn)槁暶饕粋€(gè)寄存器類變量僅僅是一個(gè)請求,而不是一條直接命令。
因?yàn)镃PU寄存器往往很少,編譯器必須在可用寄存器的個(gè)數(shù)和可用高速內(nèi)存的數(shù)量之間做權(quán)衡。
這種情況下,變量成為一個(gè)普通的自動(dòng)變量。
但是,你不能對它使用地址運(yùn)算符。
可以把一個(gè)形式參量請求為寄存器變量。

void macho (register int n)

3.具有代碼塊作用域的靜態(tài)變量
靜態(tài)變量像是一個(gè)不可變的變量。
但實(shí)際上,靜態(tài)指變量的的位置固定不動(dòng)。
具有文件作用域的變量自動(dòng)的具有靜態(tài)存儲時(shí)期。
也可以創(chuàng)建具有代碼塊作用域,兼具有靜態(tài)存儲的局部變量。
這些變量和自動(dòng)變量具有相同的作用域,當(dāng)包含這些變量的函數(shù)完成工作時(shí),它們并不消失。
從一次函數(shù)調(diào)用到下一次調(diào)用,計(jì)算機(jī)都記錄著他們的值。
我們可以使用存儲類說明符static在代碼塊內(nèi)聲明這些變量。

#include <stdio.h>
void trystat (void);
int main (void)
{
    
int count;
 
    
for (count = 1; count <= 3; count++)
    
{
        
printf ("Here comes iteration %d:\n", count);
        
trystat ();
    
}
    
    
return 0;
}
 
void trystat (void)
{
    
int fade = 1;
    
static int stay = 1;
    
    
printf ("fade = %d and stay = %d\n", fade++, stay++);
}

注意:
對函數(shù)參數(shù)不能使用static。
4.具有外部鏈接的靜態(tài)變量
具有外部鏈接的靜態(tài)變量具有文件作用域、外部鏈接和靜態(tài)存儲時(shí)期。
這一類型的變量成為外部變量 external variable。
把變量的定義聲明放在所有函數(shù)之外,即創(chuàng)建了一個(gè)外部變量。
為了使程序更加清晰,可以在使用外部變量的函數(shù)中通過使用extern關(guān)鍵字來再次聲明它。
如果變量是在別的文件中定義的,使用extern來聲明該變量就是必須的。

int Errupt//外部定義的變量
double Up[100]; //外部聲明的數(shù)組
extern char Coal; //必須的聲明,因?yàn)镃oal在其它文件中定義
 
void next (void);
int main (void)
{
    
extern int Errupt;//可選的聲明
    
extern double Up[];//可選的聲明
}
void next (void)
{
}

注意:
不同于自動(dòng)變量,如果您不對外部變量進(jìn)行初始化,他們將自動(dòng)被賦初值0。
這一原則也適用于外部定義的數(shù)組。

5.具有內(nèi)部靜態(tài)鏈接的靜態(tài)變量
通過使用存儲類說明符(注意不是靜態(tài)變量聲明符)static在所有函數(shù)的外部進(jìn)行定義,前面已經(jīng)說過該變量為整個(gè)文件私有

,這里不再討論。

int traveler = 1; //外部鏈接
static int stayhome = 1; //內(nèi)部鏈接
posted on 2008-05-06 20:18 聶元朗 閱讀(450) 評論(0)  編輯 收藏 引用 所屬分類: C語言學(xué)習(xí)筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            一区二区日韩精品| 国产精品美女久久久久久免费| 久久亚洲风情| 久久午夜精品| 另类av一区二区| 欧美成人一区二免费视频软件| 久久久久久国产精品mv| 狂野欧美一区| 久久综合久久综合这里只有精品| 久久久www| 欧美大胆成人| 99国产精品久久久| 午夜亚洲性色福利视频| 久久精彩视频| 欧美久久九九| 国产欧美一区二区三区久久| 狠狠色噜噜狠狠色综合久| 亚洲区在线播放| 亚洲视频大全| 狼人社综合社区| 亚洲另类一区二区| 香蕉久久夜色精品国产使用方法 | 亚洲破处大片| 亚洲狼人综合| 欧美在线观看视频在线 | 欧美三区美女| 激情一区二区| 一区二区三区精品视频| 久久成人亚洲| 91久久精品国产91性色tv| 亚洲香蕉网站| 另类尿喷潮videofree| 欧美三级网页| 亚洲片在线观看| 久久精品视频一| 一本久久综合亚洲鲁鲁五月天| 久久精品国产99国产精品澳门| 欧美另类视频| 又紧又大又爽精品一区二区| 亚洲一区视频| 欧美成人午夜激情在线| 亚洲一区影院| 欧美日韩国产黄| 激情综合电影网| 性xx色xx综合久久久xx| 亚洲一区免费看| 亚洲日本欧美日韩高观看| 久久久久国产成人精品亚洲午夜| 欧美三区在线| 亚洲精品欧美极品| 免费h精品视频在线播放| 亚洲午夜久久久| 欧美另类人妖| 性做久久久久久久久| 在线免费一区三区| 亚洲大片一区二区三区| 亚洲欧美影院| 日韩午夜黄色| 欧美裸体一区二区三区| 亚洲国产欧美一区二区三区久久| 久久疯狂做爰流白浆xx| 亚洲一区欧美二区| 欧美系列亚洲系列| 亚洲色图自拍| 一区二区三区三区在线| 欧美三级视频在线| 亚洲午夜小视频| 99视频一区二区| 欧美性开放视频| 亚洲午夜激情网页| 这里只有精品在线播放| 国产精品久久福利| 午夜电影亚洲| 亚洲专区一区| 黑人巨大精品欧美一区二区| 久久亚洲精品一区| 久久综合给合| 99精品国产一区二区青青牛奶| 亚洲国产美女| 欧美网站在线观看| 性刺激综合网| 久久久久国产精品厨房| 亚洲黄色在线看| 日韩一级大片在线| 国产精品久久久久三级| 欧美中文字幕在线播放| 久久久777| 亚洲理论在线| 一区二区三区精品视频| 国产日韩欧美高清| 麻豆成人综合网| 欧美日本在线一区| 性欧美办公室18xxxxhd| 久久久久国产一区二区三区四区| 亚洲欧洲一区二区三区在线观看| 亚洲黄色有码视频| 国产精品入口夜色视频大尺度| 老司机精品久久| 欧美日韩一区二区在线视频 | 欧美激情日韩| 欧美亚洲一区| 蜜臀久久99精品久久久久久9| 在线亚洲一区二区| 亚洲欧美在线磁力| 亚洲人成久久| 欧美亚洲一区二区在线观看| 亚洲精品在线免费| 亚洲欧美日韩国产一区二区三区| 亚洲激情视频网| 欧美一区二区观看视频| 一本色道久久综合亚洲精品小说 | 久久av资源网| 亚洲精品中文字幕有码专区| 亚洲免费中文字幕| 亚洲精品视频在线观看免费| 午夜天堂精品久久久久| 在线亚洲伦理| 久久亚洲综合色| 欧美一区二区啪啪| 欧美精品在线免费| 免费成人网www| 国产日韩一区二区三区在线播放| 最新中文字幕一区二区三区| 在线观看国产一区二区| 新片速递亚洲合集欧美合集| 在线视频精品一区| 蜜臀va亚洲va欧美va天堂| 久久av老司机精品网站导航 | 亚洲第一天堂av| 国模套图日韩精品一区二区| 99热免费精品| 一区二区国产在线观看| 久久亚洲视频| 麻豆精品传媒视频| 国内精品久久久久久久果冻传媒 | 99人久久精品视频最新地址| 日韩视频在线一区| 久久综合伊人| 美国成人直播| 国产综合自拍| 久久久xxx| 另类天堂av| 国产综合色精品一区二区三区| 午夜精品视频一区| 久久精品三级| 精品成人国产| 久热综合在线亚洲精品| 欧美成在线观看| 亚洲精品之草原avav久久| 欧美成人午夜| 亚洲精品国产精品久久清纯直播 | 久久国产精品久久久久久电车| 国产伦精品一区| 久久国产精品网站| 欧美成人日韩| 一区二区三区www| 国产精品系列在线| 久久国内精品自在自线400部| 免费精品99久久国产综合精品| 亚洲第一免费播放区| 欧美日韩视频| 久久久999精品免费| 91久久国产综合久久蜜月精品| 亚洲视频播放| 狠狠色噜噜狠狠狠狠色吗综合| 欧美福利小视频| 亚洲午夜久久久| 欧美搞黄网站| 欧美在线观看一区二区三区| 亚洲国产成人久久综合| 欧美日本视频在线| 久久久亚洲高清| 久久久久国产一区二区| 激情av一区| 欧美激情一区二区| 亚洲女同精品视频| 亚洲成色777777在线观看影院| 亚洲一区二区精品| 国产精品一页| 欧美激情一区二区三级高清视频| 亚洲一区不卡| 欧美大秀在线观看| 亚洲高清免费视频| 午夜精品久久久久久久久久久久| 久久激情婷婷| 国产精品久久久一区二区三区| 国产精品一区二区三区久久| 亚洲高清在线观看| 亚洲一区二区三区成人在线视频精品| 久久综合伊人| 欧美人与禽猛交乱配视频| 美国十次了思思久久精品导航| 亚洲国产欧美一区二区三区久久| 久久色在线观看| 亚洲美洲欧洲综合国产一区| 久久久综合网站| 欧美一区二区视频在线观看2020| 亚洲国产美女精品久久久久∴| 欧美色图天堂网| 久久尤物电影视频在线观看|