c語言字面量的作用是為變量,C語言(五) C 全局變量,局部變量,靜態變量和常量...

一. 全局變量

全局變量是在所有函數體的外部定義的,程序的所有部分(其他文件的代碼)都可以使用。全局變量不受作用域的影響。全局變量的生命周期一直到程序的結束,全局變量是靜態存儲方式。

例:

#include #include /* a 就是一個全局變量*/

int a = 2;

int main(int argc, char *argv[]) {

printf("int 存儲大小 : %d \n", a);

return 0;

}

如果在一個文件中使用extern關鍵字來聲明另一個文件中存在的全局變量,那么這個文件可以使用這個變量。

例:

在a.c中定義一個全局變量

#include #include int a = 3;/*定義在a.c文件中的全局變量a*/

在main.c中使用extern關鍵字引用a.c中的全局變量a

#include #include /* 使用extern管金子引用a.c中的全局變量a*/

extern int a;

int main(int argc, char *argv[]) {

printf("int 存儲大小 : %d \n", a);

return 0;

}

二.局部變量

局部變量出現在一個作用域內,它們是局限于一個函數的。局部變量經常被稱為自動變量,因為它們在進入作用域時,自動生成,離開作用域時自動消失。關鍵字auto可以顯示的說明這個問題,但局部變量默認為auto,所以沒必要聲明為auto。通常函數里定義的變量,函數的參數都局部變量。所以一般需要在某個函數里,返回數組的地址或者指針之類,這時候必須定義成static,或者動態申請內存,這樣函數結束返回時才不會釋放掉那塊內存空間。

寄存器變量也是一種局部變量。register來修飾,就是告訴編譯器盡可能快的訪問這個變量,通過存放在寄存器中來實現快速訪問。

三.靜態變量

靜態變量的修飾關鍵字是static,static可以作用于變量以及函數。由static修飾的,可分為靜態局部變量,靜態全局變量,靜態函數。靜態變量的生命期和程序生命期是一樣的,在程序結束之后操作系統會回收空間。?靜態變量當然是屬于靜態存儲方式,但是屬于靜態存儲方式的量不一定就是靜態變量。?例如外部變量雖屬于靜態存儲方式,但不一定是靜態變量,必須由?static加以定義后才能成為靜態外部變量,或稱靜態全局變量

1.靜態局部變量

在局部變量前面加上static后,就定義了靜態局部變量,靜態局部變量屬于靜態存儲方式,靜態局部變量只會被初始化一次,下次使用依據上一次保存的值。它具有以下特點:

(1)? 靜態局部變量在函數內定義?,它的生存期為整個源程序,但是其作用域仍與自動變量相同,只能在定義該變量的函數內使用該變量。退出該函數后,?盡管該變量還繼續存在,但不能使用它。(作用域不變,生存周期變了)

(2)? 允許對構造類靜態局部量賦初值?,例如數組,若未賦以初值,則由系統自動賦以0值。(而非靜態局部變量未賦初始值,系統會給個隨機值)

(3)? 對基本類型的靜態局部變量,若在說明時未賦以初值,則系統自動賦予0值。而對自動變量沒有賦初值,則其值是隨機值。

靜態局部變量是一種生存期為整個源程序的量。雖然離開定義它的函數后不能使用,但如再次調用定義它的函數時,它又可繼續使用,?而且保存了上次被調用后留下的值。?因此,當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮采用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以采用局部靜態變量為宜。

2.靜態全局變量

全局變量(外部變量)的說明之前再加static?就構成了靜態全局變量。static全局變量只初使化一次,防止在其他文件單元中被引用。全局變量本身就是靜態存儲方式,?靜態全局變量當然也是靜態存儲方式。?這兩者在存儲方式上并無不同。這兩者的區別雖在于非靜態全局變量的作用域是整個源程序,?當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。?而靜態全局變量則限制了其作用域,?即只在定義該變量的源文件內有效,在同一源程序的其它源文件中不能使用它。由于靜態全局變量的作用域局限于一個源文件內,只能為該源文件內的函數公用,?因此可以避免在其它源文件中引起錯誤。

四.常量

常量是固定值,在程序執行期間不會改變。這些固定的值,又叫做字面量。

常量可以是任何的基本數據類型,比如整數常量、浮點常量、字符常量,或字符串字面值,也有枚舉常量。

常量就像是常規的變量,只不過常量的值在定義后不能進行修改。

定義常量

在 C 中,有兩種簡單的定義常量的方式:

使用?#define?預處理器。

使用?const?關鍵字。

#define 例子:

#include #define LENGTH 10

#define WIDTH 5

#define NEWLINE '\n'

int main()

{

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

const 例子:

#include int main()

{

const int LENGTH = 10;

const int WIDTH = 5;

const char NEWLINE = '\n';

int area;

area = LENGTH * WIDTH;

printf("value of area : %d", area);

printf("%c", NEWLINE);

return 0;

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529944.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529944.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529944.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

河南理工大學c語言報告封面,河南理工大學圖書信息管理系統設計_純c語言課程設計.doc...

河南理工大學圖書信息管理系統設計_純c語言課程設計C語言課程設計報告題 目:圖書信息管理系統設計河南理工大學計算機學院目 錄第一章 題目與要求1.1 問題提出11.2 本系統涉及的知識點11.3 功能要求1第二章 功能設計2.1 算法設計12.2 部分模塊流程圖4第三章 程序代碼…

vfp程序轉換為c語言程序軟件,c語言程序設計及vfp程序設計試題.doc

c語言程序設計及vfp程序設計試題高級語言(C)程序設計部分(滿分100分)一、單項選擇題(每小題1分,共20分)1、在C語言中,不正確的int類型的常數是( )A、32768  B、0  C、037   D、0xAF2、設變量x為float型且已經賦值,則以下語句中能夠將x中…

python是由c語言編寫的么,在python中使用c語言編寫的庫

本文使用的 cffi 官網網址:https://cffi.readthedocs.io/en/latest/overview.htmlcffi 自己本身使用了pycparser 這個庫,是用python編寫的c語言parser庫,官網地址: https://github.com/eliben/pycparserpython被稱為是“膠水語言”…

c語言小明今年16歲,C語言1.爺爺對小明說:我現在的年齡是你的7倍,過幾年是你的6倍,再過若干年就分別是你的5倍,4倍,3倍,2倍.你知道爺爺和小明現在的年齡嗎?...

滿意答案ta_meng2013.06.15采納率&#xff1a;49% 等級&#xff1a;12已幫助&#xff1a;5126人#include void main(){int i,j,k;int t60,t50,t40,t30,t20; //用于標記是否達到過這些要求&#xff0c;C語言貌似沒有bool類型吧for (i21;i<200;i7) //爺爺的年齡為i{ji/7;…

android 控件坐標轉換,Android自定義動畫根據控件Y軸旋轉動畫(仿紅包)

這里給正在學安卓的小白們分享一個動畫吧&#xff0c;用處挺多&#xff0c;代碼也不多&#xff0c;還望各位大佬不要打擊。進入正題&#xff0c;先看看效果效果很炫酷很美好好了 來看代碼吧 該說的都在代碼注釋里面 這個不用多說 代碼極其簡單//自定義一個類繼承Animation(…

android datepicker 自定義,android – 如何使用兩個datepicker創建自定義對話框?

最好先閱讀Dialogs和Pickers.至于實現,您可以有兩個按鈕&#xff1a;一個用于顯示開始日期的日期選擇器,另一個用于顯示結束日期.編輯&#xff1a;如果你真的想在1個對話框中顯示2個日期選擇器,這里有一個如何做的例子.首先,創建自定義XML布局./res/layout/custom_date_picker.…

Android usb 權限廣播,android10.0 USB彈窗權限流程解析

USB請求權限流程1. 新建activity&#xff0c;獲取UsbManager usbManager (UsbManager) getSystemService(Context.USB_SERVICE)2. 獲取所以的USB設備HashMap map usbManager.getDeviceList()3. 過濾別的USB設備&#xff0c;拿到自己USB的USBDevice類&#xff0c;然后請求USB權…

RN做的Android應用反編譯,macOS Catalina配置Android反編譯三件套 apktool/dex2jar/enjarify/jd-gui...

創建目錄$ cd ~$ mkdir Android$ cd Android12345$cd~$mkdirAndroid$cdAndroid下載安裝配置dex2jar$ wget https://github.com/pxb1988/dex2jar/files/1867564/dex-tools-2.1-SNAPSHOT.zip// 本站 wget https://www.mobibrw.com/wp-content/uploads/2020/07/dex-tools-2.1-SNAP…

android手勢監聽功能嗎,Android手勢監聽 OnGestureListener (短按,長按,慢滑動,快滑動)...

/*** 以下方法中的參數解釋&#xff1a;* e1&#xff1a;第1個是 ACTION_DOWN MotionEvent 按下的動作* e2&#xff1a;后一個是ACTION_UP MotionEvent 抬起的動作(這里要看下備注5的解釋)* velocityX&#xff1a;X軸上的移動速度&#xff0c;像素/秒* velocityY&#xff1a;Y軸…

android 仿網易標題欄,仿網易新聞可滑動標題欄TabLayout(文字或圖標)

近期有需要&#xff0c;要做一個類似于網易新聞首頁中的可滑動標題欄 TabLayout&#xff0c;根據大神寫的 FlycoTabLayout 改造了一下&#xff0c;可以加載網絡圖片&#xff0c;主要實現內容如下&#xff1a;1. 可配置標題選中效果(下劃線/上三角/圓角矩形或橢圓)&#xff1b;2…

android 多態如何組件化,Android組件化之子模塊之間通信方案

1 背景Android開發中你的模塊(Module)一般只有一個app主模塊&#xff0c;隨著功能不斷擴展你會發現一個模塊的缺點就是各種業務高度耦合&#xff0c;你就想測試登錄模塊&#xff0c;那么你可能會把支付模塊也編譯進去了&#xff0c;代價就是編譯耗時&#xff0c;降低效率。大牛…

unity android sd卡路徑,一、文件與路徑——2、unity路徑特點寫法和文件讀寫全攻略...

1、Unity中各路徑和目錄的對應關系image.png其中&#xff0c;安卓中的路徑是有兩種分支的image.png在打包面板中&#xff0c;有個Write Access當我們選擇Internal Only就是表示沙盒路徑&#xff0c;/data/data/com.xxx.xxx/對應的Android方法為 getFilesDir()當我們選擇SDCard時…

html 圖片行內劇中,HTML入門(轉義字符、行內樣式和塊級元素、定位、錨點、跑馬燈標簽、圖片標簽、表格標簽的講解)...

一、轉義字符由特殊字符包裹的文本 會當做標簽去解析對應不換行空格對應全角空格 em是字體排印學的計量單位&#xff0c;相當于當前指定的點數。其占據的寬度正好是1個中文寬度&#xff0c;而且基本上不受字體影響。<對應<>對應>二、行內元素和塊級元素1.塊級標簽默…

html scale方法的作用,HTML Canvas scale() 方法

實例繪制矩形&#xff0c;放大到 200%&#xff0c;然后再次繪制矩形&#xff1a;YourbrowserdoesnotsupporttheHTML5canvastag.JavaScript&#xff1a;var cdocument.getElementById("myCanvas");var ctxc.getContext("2d");ctx.strokeRect(5,5,25,15);ctx…

html屏幕輸出筆記本,筆記本怎樣外接顯示器 筆記本外接顯示器方法【詳解】

摘要&#xff1a;筆記本電腦怎樣外接顯示器?一些用戶用慣了大屏臺式電腦的朋友&#xff0c;改用筆記本玩游戲&#xff0c;看電影等開始會很不習慣&#xff0c;由于筆記本的屏幕與鍵盤相比臺式機要小上一大截。如果身邊有顯示器或者液晶電視的話&#xff0c;不妨動手體驗下筆記…

江陵中學2021高考成績查詢,2021高考序幕拉開 荊州38080名考生赴考

十年寒窗磨一劍&#xff0c;只待今朝問鼎時&#xff0c;6月7日上午&#xff0c;2021年全國高考正式拉開序幕&#xff0c;荊州3.8萬余名考生迎來人生大考。上午8點&#xff0c;在湖北省沙市中學考點周圍&#xff0c;不少身著紅色送考服的班主任們正在給考生們發放準考證&#xf…

html怎么播放下一首,javascript – HTML5音頻播放列表 – 第一個結束后如何播放第二個音頻文件?...

這是一個JSLinted,不引人注目的Javascript示例,演示如何處理和使用結束的mediaevent.在您的特定情況下,您將觸發在您的結束事件處理程序中播放第二個音頻文件.單擊播放列表中的項目開始播放.一個音頻結束后,下一個音頻開始.標記&#xff1a;(注意,有意避免< li>元素之間的…

排球制作html,MAYA打造排球建模教程

這篇教程向悠悠之家的朋友們介紹用MAYA打造排球模型的過程&#xff0c;制作很簡單&#xff0c;希望對剛學習MAYA建模的朋友們有所幫助&#xff0c;我們先看看最終的效果圖&#xff1a;你們一定學過很多創建一個球的技巧&#xff0c;但在這個入門教學里面&#xff0c;我們將要學…

北大計算機系統結構學碩,轉自包云剛,希望的原野?最近幾個月參加了計算所、北大、上海交大多位計算機系統結構碩士與博士的答辯,說幾點體會:?①?高水平國際論文越來越多。簡單...?-?雪球...

來源&#xff1a;雪球App&#xff0c;作者&#xff1a; 逍遙劍99&#xff0c;(https://xueqiu.com/1732900127/153778925)最近幾個月參加了計算所、北大、上海交大多位計算機系統結構碩士與博士的答辯&#xff0c;說幾點體會&#xff1a;① 高水平國際論文越來越多。簡單統計了…

計算機主機箱前后都有什么,目前四種熱門的主機機箱設計都有哪些優缺點?

在DIY里面機箱算是最沒技術含量的產品之一&#xff0c;不過它卻是與DIYer接觸時間最長的東西。氣味大師每天都會按下機箱開機鍵&#xff0c;也會空余時間瞄上幾眼。機箱確實是對DIY影響最大的產品之一&#xff0c;今天我來盤點一下2018年見過的幾個主流機箱設計方案。說是機箱設…