中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

c語言存儲類里的關鍵字有哪些

本篇內容主要講解“c語言存儲類里的關鍵字有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“c語言存儲類里的關鍵字有哪些”吧!

創(chuàng)新互聯(lián)2013年至今,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元遷西做網(wǎng)站,已為上家服務,為遷西各地企業(yè)和個人服務,聯(lián)系電話:18982081108

-auto-


(1)auto關鍵字在C語言中只有一個作用,那就是修飾局部變量。

(2)auto修飾局部變量,表示這個局部變量是自動局部變量,自動局部變量分配在棧上。(既然

在棧上,說明它如果不初始化那么值就是隨機的······)。

(3)平時定義局部變量時就是定義的auto的,只是省略了auto關鍵字而已。可見,auto的局部變量其實就是默認定義的普通的局部變量。

-static -


(1)static關鍵字在C語言中有2種用法,而且這兩種用法彼此沒有任何關聯(lián)、完全是獨立的。其實當年本應該多發(fā)明一個關鍵字,但是C語言的作者覺得關鍵字太多不好,于是給static增加了一種用法,導致static一個關鍵字竟然有兩種截然不同的含義。

(2)static的第一種用法是:用來修飾局部變量,形成靜態(tài)局部變量。要搞清楚靜態(tài)局部變量和非靜態(tài)局部變量的區(qū)別。本質區(qū)別是存儲類不同(存儲類不同就衍生出很多不同):非靜態(tài)局部變量分配在棧上,而靜態(tài)局部變量分配在數(shù)據(jù)段/bss段上, 在數(shù)據(jù)段的話,它是初始化好的,在bss段的話,一般我們沒有初始化的,一般默認0,這個和全局變量不初始化一樣。


#include <stdio.h>

int main(void)
{
    static a;

    printf("the a is %d\n",a);

    return 0;
}
 

演示結果:

    the a is 0 

(3)static的第二種用法是:用來修飾全局變量,形成靜態(tài)全局變量。要搞清楚靜態(tài)全局變量和非靜態(tài)全局變量的區(qū)別。區(qū)別是在鏈接屬性上不同,等下面有介紹的。這里的話我舉幾個例子來說明:


------沒用static關鍵字修飾:

  #include <stdio.h>

   void test()
  {
       int num = 0;
       num++;
       printf("%d ", num);
  }
   int main()
   {
       int i = 0;
      for (i = 0; i < 10; i++)
      {
        test();
      }
       return 0;
   }
    

演示結果:

1 1 1 1 1 1 1 1 1 1 

-----加了static修飾:

  #include <stdio.h>

   void test()
  {
      static int num = 0;
       num++;
       printf("%d ", num);
  }
   int main()
   {
       int i = 0;
      for (i = 0; i < 10; i++)
      {
        test();
      }
       return 0;
   }
 

演示結果:


    1 2 3 4 5 6 7 8 9 10 

(4)小結:

  • 靜態(tài)局部變量在存儲類方面和全局變量一樣

  • 靜態(tài)局部變量在生命周期方面和全局變量一樣。

  • 靜態(tài)局部變量和全局變量的區(qū)別是:作用域、連接屬性。靜態(tài)局部變量作用域是代碼塊作用域(和普通局部變量是一樣的)、鏈接屬性是無連接;全局變量作用域是文件作用域(和函數(shù)是一樣的)、鏈接屬性方面是外連接。這里先簡單說一下三種鏈接屬性:

  • (1)外鏈接的意思就是外部鏈接屬性,也就是說外鏈接可以在整個程序范圍內(言下之意就是可以跨文件)進行鏈接,譬如普通的函數(shù)和全局變量屬于外鏈接。

  • (2)內鏈接的意思就是(c文件內部)內部鏈接屬性,也就是說這家伙可以在當前c文件內部范圍內進行鏈接(言下之意就是不能在當前c文件外面的其他c文件中進行訪問、鏈接)。static修飾的函數(shù)/全局變量屬于內鏈接。

  • (3)無連接的意思就是這個符號本身不參與鏈接,它跟鏈接沒關系。所有的局部變量(auto的、static的)都是無連接的。

(5)靜態(tài)函數(shù)(就是使用這個static關鍵字修飾),想必搞stm32的讀者,都有接觸到(這里的話,我就不例子了);當你的程序中有很多源文件的時候(這在寫stm32的時候經(jīng)常遇到,而且經(jīng)常要養(yǎng)成多文件不被重復包含的寫法代碼習慣),一般在stm32里面會使用這個static關鍵字來修飾函數(shù),所以這個函數(shù)就只能在這個文件內使用了,不能在外部再使用這個函數(shù)了(這個函數(shù)的作用域只能在當前文件內),其實和上面講全局變量和靜態(tài)全局變量的區(qū)別類似。

-register -


(1)register關鍵字不常用,也只有一個作用,那就是:register修飾的變量。編譯器會盡量將它分配在寄存器中。(平時分配的一般的變量都是在內存中的,其實讀取內存中的數(shù)據(jù)過程是這樣的:cpu+寄存器+cache+內存)。分配在寄存器中一樣的用,但是讀寫效率會高很多。所以register修飾的變量用在那種變量被反復高頻率的使用,通過改善這個變量的訪問效率可以極大的提升程序運行效率時。所以register是一種極致提升程序運行效率的手段。

(2)平時寫代碼要被定義成register這種情況很少,一般慎用。

(3)register編譯器只能承諾盡量將register修飾的變量放在寄存器中,但是不保證一定放在寄存器中。主要原因是因為寄存器數(shù)量有限,不一定有空用。

到此,相信大家對“c語言存儲類里的關鍵字有哪些”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

本文標題:c語言存儲類里的關鍵字有哪些
瀏覽路徑:http://m.2m8n56k.cn/article36/jdcpsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供電子商務響應式網(wǎng)站關鍵詞優(yōu)化域名注冊移動網(wǎng)站建設網(wǎng)站導航

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
主站蜘蛛池模板: 成人国内精品久久久久影院 | 国产一级在线现免费观看 | 91九九| 免费女人18毛片a级毛片视频 | 亚洲免费视频网址 | 久久久国产99久久国产久 | 97香蕉久久夜色精品国产 | 欧美一级久久久久久久久大 | 精品一久久香蕉国产二月 | 国产欧美日韩在线观看一区二区三区 | 久草手机在线观看 | 一级做a爰全过程免费视频毛片 | 国产成人一区二区三区在线视频 | 超矿碰人人超人人看 | 日韩精品一区二区三区在线观看 | 精品久久久久久综合网 | 国产一区二区三区免费播放 | 久久久亚洲国产精品主播 | 免费国产黄网站在线观看视频 | 久久草在线看 | 国产美女视频黄a视频全免费网站 | 97国产大学生情侣11在线视频 | 手机看片免费基地你懂的 | 91精品国产爱久久久久 | 亚洲精品在线免费 | 在线成人亚洲 | 国产成人午夜性a一级毛片 国产成人午夜性视频影院 国产成人香蕉久久久久 | 国产精品欧美一区二区 | 亚洲精品aaa | 欧美成人免费在线观看 | 久久综合狠狠综合久久97色 | 国产一区二区三区手机在线观看 | 成人性视频在线 | 一个人看的免费观看日本视频www | 在线国产一区二区 | 欧美高清免费精品国产自 | 精品91精品91精品国产片 | 中文字幕一区二区视频 | 精品综合 | 国产福利片在线 易阳 | 久青草免费视频手机在线观看 |