C語言的發(fā)展頗為有趣,它的原型ALGOL 60語言。那么大家知道C語言函數(shù)是什么嗎?下面一起來看看!
創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、梧州網(wǎng)絡(luò)推廣、小程序定制開發(fā)、梧州網(wǎng)絡(luò)營銷、梧州企業(yè)策劃、梧州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供梧州建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
函數(shù)(Function)是一段可以重復(fù)使用的代碼,這是從整體上對函數(shù)的認識。
C語言本身帶了很多庫函數(shù),并分門別類地放在了不同的頭文件中,使用時只要引入對應(yīng)的頭文件即可。
除了C語言自帶的.函數(shù),我們也可以編寫自己的函數(shù),稱為自定義函數(shù)(User-Defined Function)。自定義函數(shù)和庫函數(shù)沒有本質(zhì)的區(qū)別,表現(xiàn)形式和使用方法一樣,只是開發(fā)者不同而已。
這一章我們就來講解如何編寫和使用自己的函數(shù)。
參數(shù)
函數(shù)的一個明顯特征就是使用時帶括號( ),必要的話,括號中還要包含數(shù)據(jù)或變量,稱為參數(shù)(Parameter)。參數(shù)是函數(shù)需要處理的數(shù)據(jù),例如:
strlen(str1)用來計算字符串的長度,str1就是參數(shù)。
puts("C語言中文網(wǎng)")用來輸出字符串,"C語言中文網(wǎng)"就是參數(shù)。
返回值
既然函數(shù)可以處理數(shù)據(jù),那就有必要將處理結(jié)果告訴我們,所以很多函數(shù)都有返回值(Return Value)。所謂返回值,就是函數(shù)的執(zhí)行結(jié)果。例如:
char str1[] = "C Language";
int len = strlen(str1);
strlen() 的處理結(jié)果是字符串 str1 的長度,是一個整數(shù),我們通過 len 變量來接收。
函數(shù)返回值有固定的數(shù)據(jù)類型(int、char、float等),用來接收返回值的變量類型要一致。
C語言中的變量是指在程序運行時其值可以改變的量,變量的功能就是存儲數(shù)據(jù)。
變量有三個基本要素:
變量名:每一個變量都應(yīng)該有一個名字。
變量的數(shù)據(jù)類型:每一個變量都應(yīng)具有一種數(shù)據(jù)類型(在定義時指定)內(nèi)存中占據(jù)一定的儲存空間
變量的值:變量對應(yīng)的存貯空間中所存放的數(shù)。
擴展資料:
基本的變量類型有以下幾種:
C 中的變量聲明
變量聲明向編譯器保證變量以指定的類型和名稱存在,這樣編譯器在不需要知道變量完整細節(jié)的情況下也能繼續(xù)進一步的編譯。變量聲明只在編譯時有它的意義,在程序連接時編譯器需要實際的變量聲明。
變量的聲明有兩種情況:
1、一種是需要建立存儲空間的。例如:int a 在聲明的時候就已經(jīng)建立了存儲空間。
2、另一種是不需要建立存儲空間的,通過使用extern關(guān)鍵字聲明變量名而不定義它。 例如:extern int a 其中變量 a 可以在別的文件中定義的。
除非有extern關(guān)鍵字,否則都是變量的定義。
參考資料來源:百度百科-C語言
看你的需要了,有時不用指針作為參數(shù)達不到你要的效果,比如一個swap()函數(shù)。
int swap(int a,int b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
如果你想調(diào)用該函數(shù)交換兩個變量的值,在主函數(shù)中輸出,那是不可能的。比如這樣調(diào)用:
int x=1,y=2;
swap(x,y);
printf("%d %d",x,y);
你認為會輸出2 1嗎?錯!還是會輸出1 2的。因為傳入swap()函數(shù)的只是x,y的拷貝,而不是它們自身。
如果要真正達到交換的目的,就要用指針傳值。這樣定義函數(shù):
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
但是給函數(shù)傳值時要注意,指針是指向地址的,所以參數(shù)要是地址,即需要給變量取地址。
int x=1,y=2;
swap(x,y);
printf("%d %d",x,y);
這樣就是輸出2 1了
c語言中常常用到變量,c語言中什么是變量呢?那么下面是我整理的c語言變量的定義,歡迎閱讀。
c語言什么是變量
變量來源于數(shù)學(xué),是計算機語言中能儲存計算結(jié)果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數(shù)式語言(如Haskell)中,變量可能是不可變(immutable)的。在一些語言中,變量可能被明確為是能表示可變狀態(tài)、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。
變量介紹
由于變量讓你能夠把程序中準備使用的每一段數(shù)據(jù)都賦給一個簡短、易于記憶的名字,因此它們十分有用。變量可以保存程序運行時用戶輸入的數(shù)據(jù)(如使用InputBox函數(shù)在屏幕上顯示一個對話框,然后把用戶鍵入的文本保存到變量中)、特定運算的結(jié)果以及要在窗體上顯示的一段數(shù)據(jù)等。簡而言之,變量是用于跟蹤幾乎所有類型信息的簡單工具。
變量聲明后沒有賦值的話 編譯器會自動提示并賦予默認值
變量是一種使用方便的占位符,用于引用計算機內(nèi)存地址,該地址可以存儲Script運行時可更改的程序信息。例如,可以創(chuàng)建一個名為Click Count的變量來存儲用戶單擊Web頁面上某個對象的次數(shù)。使用變量并不需要了解變量在計算機內(nèi)存中的地址,只要通過變量名引用變量就可以查看或更改變量的值。在VB Script中只有一個基本數(shù)據(jù)類型,即Variant,因此所有變量的數(shù)據(jù)類型都是Variant。
聲明變量
聲明變量的一種方式是使用Dim語句、Public語句和Private語句在Script中顯式聲明變量。例如:
Dim Degrees Fahrenheit
聲明多個變量時,使用逗號分隔變量。例如:
Dim Top, Bottom, Left, Right
另一種方式是通過直接在Script中使用變量名這一簡單方式隱式聲明變量。這通常不是一個好習(xí)慣,因為這樣有時會由于變量名被拼錯而導(dǎo)致在運行Script時出現(xiàn)意外的結(jié)果。因此,最好使用Option Explicit語句顯式聲明所有變量,并將其作為Script的第一條語句。
命名規(guī)則
首先,我們必須給變量取一個合適的名字,就好像每個人都有自己的名字一樣,否則就難以區(qū)分了?!≡赩B6中,變量的命名必須遵循以下規(guī)則:
(1)變量名必須以字母或下劃線打頭,名字中間只能由字母、數(shù)字和下劃線“_”組成;最后一個字符可以是類型說明符;
(2)變量名的長度不得超過255個字符;
(3)變量名在有效的范圍內(nèi)必須是唯一的。有效的范圍就是引用變量可以被程序識別、使用的作用范圍——例如一個過程、一個窗體等等。有關(guān)引用變量作用范圍的內(nèi)容,將在以后介紹。
(4)變量名不能是VB中的保留字(關(guān)鍵字),也不能是末尾帶類型說明符的保留字,但可以把保留字嵌入變量名, 關(guān)鍵字是指VB6語言中的屬性、事件、方法、過程、函數(shù)等系統(tǒng)內(nèi)部的標識符。如已經(jīng)定義的詞(if、endif、while、loop等)、函數(shù)名(len、format、msgbox等)。像Print、Print$是非法的,而Myprint是合法的?!±纾骸trName1,intMax_Length,intLesson,strNo3等是合法的變量名,而AB,all right,3M,_Number等是非法的變量名。
注意:
(1)變量名在VB中是不區(qū)分大小寫的(如ABC、aBc、abc等都是一樣的)。C語言中區(qū)分大小寫。不同的語言有不同的規(guī)則。
(2)定義和使用變量時,通常要把變量名定義為容易使用閱讀和能夠描述所含數(shù)據(jù)用處的名稱,而不要使用一些難懂的縮寫如A或B2等。例如:假定正在為水果鋪編一個銷售蘋果的軟件。我們需要兩個變量來存儲蘋果的價格和銷量。此時,可以定義兩個名為Apple_Price和Apple_Sold的變量。每次運行程序時,用戶就這兩個變量提供具體值,這樣看起來就非常直觀。具體方法是:通過用一個或多個單詞組成有意義的變量名來使變量意義明確。例如,變量名SalesTaxRate就比Tax或Rate的意義明確得多。
(3)根據(jù)需要混合使用大小寫字母和數(shù)字。一個合理協(xié)議是,變量中每個單詞的第一個字母大寫,例如:DateOfBirth。
(4)另一個合理協(xié)議是,每個變量名以兩個或三個字符縮寫開始,這些字符縮寫對應(yīng)于變量要存儲數(shù)據(jù)的數(shù)據(jù)類型。例如,使用strName來說明Name變量保存字符串型數(shù)據(jù)。這種命名方法叫匈牙利命名法
格式 變量類型 + 變量名字
比如剛才說的strname "str" 是"string"的縮寫 "Name" 則是變量名字
注意 變量類型都是小寫 而且變量名字是開頭大寫
C# 命名方法
1
stringstrName
VB 命名方法
1
DimstrNameasString
雖然無須過多地關(guān)注字符縮寫的細節(jié),但以后還是需要看一下這方面的約定。在Visual Basic聯(lián)機幫助和許多Visual Basic高級編程的書籍中都可以找到這一約定的細節(jié)。
存活期
變量存在的時間稱為存活期。Script級變量的存活期從被聲明的一刻起,直到Script運行結(jié)束。對于過程級變量,其存活期僅是該過程運行的時間,該過程結(jié)束后,變量隨之消失。在執(zhí)行過程時,局部變量是理想的臨時存儲空間。可以在不同過程中使用同名的局部變量,這是因為每個局部變量只被聲明它的過程識別。
作用域
變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域并被稱為過程級變量。如果在過程之外聲明變量,則該變量可以被Script中所有過程所識別,稱為Script級變量,具有Script級作用域。
生存期
是指變量的分配與回收的全過程,
類型
屬性變量和用戶自己建立的變量。
當我們在窗體中設(shè)計用戶界面時,vb6會自動為產(chǎn)生的對象(包括窗體本身)創(chuàng)建一組變量,即屬性變量,并為每個變量設(shè)置其缺省值。這類變量可供我們直接使用,比如引用它或給它賦新值。
用戶也可以創(chuàng)建自己的變量,以便存放程序執(zhí)行過程中的臨時數(shù)據(jù)或結(jié)果數(shù)據(jù)等等。在程序中,這樣的變量是非常需要的。下面就介紹這類變量的創(chuàng)建和使用方法。
聲明變量
變量在使用前,必須在代碼中進行聲明,即創(chuàng)建該變量。
在使用變量之前,大多數(shù)語言通常首先需要聲明變量。就是說,必須事先告訴編譯器在程序中使用了哪些變量,及這些變量的數(shù)據(jù)類型以及變量的長度。這是因為在編譯程序執(zhí)行代碼之前編譯器需要知道如何給語句變量開辟存儲區(qū),這樣可以優(yōu)化程序的執(zhí)行。
聲明變量有兩種方式分別是隱式聲明、顯式聲明。
隱式聲明:
變量可以不經(jīng)聲明直接使用,此時VB給該變量賦予缺省的類型和值。這種方式比較簡單方便,在程序代碼中可以隨時命名并使用變量,但不易檢查。
顯式聲明:
用聲明語句創(chuàng)建變量。
強制顯式聲明變量:
為了避免寫錯變量名引起的麻煩,用戶可以規(guī)定,只要遇到一個未經(jīng)明確聲明就當成變量的名字,VB都發(fā)出錯誤警告。方法是----強制顯式聲明變量。要強制顯式聲明變量,只須在類模塊、窗體模塊或標準模塊的聲明段中加入這條語句:
Option Explicit
這條語句是用來規(guī)定在本模塊中所有變量必須先聲明再使用,即不能通過隱式聲明來創(chuàng)建變量。在添加Option Explicit語句后,VB將自動檢查程序中是否有未定義的變量,發(fā)現(xiàn)后將顯示錯誤信息。
如果要自動插入Option Explicit語句,用戶只要在“工具”菜單中選取“選項”命令,然后單擊“選項”對話框中的“編輯器”選項卡,再選中“要求變量聲明”選項
這樣VB就會在任何新模塊中自動插入Option Explicit語句,但只會在新建立的模塊中自動插入。所以對于已經(jīng)建立的模塊,只能用手工方法向現(xiàn)有模塊添加Option Explicit語句(只有再重新啟動VB,這項功能才有效)。
理變量范圍
變量的范圍確定了能夠知曉該變量存在的那部分代碼。在一個過程內(nèi)部聲明變量時,只有過程內(nèi)部的代碼才能訪問或改變那個變量的值;它有一個范圍,對該過程來說是局部的。但是,有時需要使用具有更大范圍的變量,例如這樣一個變量,其值對于同一模塊內(nèi)的所有過程都有效,甚至對于整個應(yīng)用程序的所有過程都有效。Visual Basic 允許在聲明變量時指定它的范圍。
存儲類型
我們在程序中會經(jīng)常定義一些變量來保存和處理數(shù)據(jù)。從本質(zhì)上看,變量代表了一段可操作的內(nèi)存,也可以認為變量是內(nèi)存的符號化表示。當程序中需要使用內(nèi)存時,可以定義某種類型的變量。此時編譯器根據(jù)變量的數(shù)據(jù)類型分配一定大小的內(nèi)存空間。程序就可以通過變量名來訪問對應(yīng)的內(nèi)存了。
如果說變量的數(shù)據(jù)類型決定了對應(yīng)內(nèi)存的大小,那么存儲類型則影響著對應(yīng)內(nèi)存的使用方式。所謂使用方式,具體說就是在什么時間、程序的什么地方可以使用變量,即變量的生命周期和作用域。
先了解一些基本常識。一、在程序運行時內(nèi)存中有三個區(qū)域可以保存變量:靜態(tài)存儲區(qū)、棧(stack)和堆(heap)。二、根據(jù)變量定義的位置可分為全局變量(定義在函數(shù)體外的變量)和局部變量(定義在函數(shù)體內(nèi)的變量,包括形參)。
所有的全局變量和靜態(tài)局部變量(定義時使用關(guān)鍵字static)都保存在靜態(tài)存儲區(qū),其特點是:在編譯時分配內(nèi)存空間并進行初始化。在程序運行期間,變量一直存在,直到程序結(jié)束,變量對應(yīng)的內(nèi)存空間才被釋放。
而所有的非靜態(tài)局部變量(又稱為自動變量)保存在棧(stack)中,其特點是:在變量所在的函數(shù)或模塊被執(zhí)行時動態(tài)創(chuàng)建,函數(shù)或模塊執(zhí)行完時,變量對應(yīng)的內(nèi)存空間被釋放。換句話說,函數(shù)或模塊每被執(zhí)行一次,局部變量就會重新被分配空間。如果變量定義時沒有初始化,那么變量中的值是隨機數(shù)。
所有用malloc分配的內(nèi)存(又稱為動態(tài)內(nèi)存)都在堆(heap)中,其特點是:一般通過指針來訪問動態(tài)分配的內(nèi)存。即可以通過free來手動釋放動態(tài)內(nèi)存,也可以在程序結(jié)束時由系統(tǒng)自動釋放。
以上討論的是變量的生命周期,下面來看作用域。作用域指的是變量的可見范圍,即在變量的生命周期內(nèi),程序的哪些部分可以使用該變量。
全局變量的作用域從定義點開始一直到源文件的結(jié)束。如果要在定義點之前使用全局變量的話就需要使用關(guān)鍵字extern對作用域進行擴展。全局變量缺省是可以被其他文件引用的。如果希望僅限于本文件使用的話,需要在定義時使用關(guān)鍵字static。
對于局部變量來說,無論是靜態(tài)局部變量還是自動變量,作用域都僅限于定義該變量的函數(shù)或模塊。
動態(tài)內(nèi)存只要沒有被釋放就可以在程序的任何地方使用,前提是要知道動態(tài)內(nèi)存的地址。
注:static加在全局變量前影響的是作用域,加在局部變量前影響的是生命周期。
變量類型
C語言中,變量分為全局變量和局部變量;也可以這樣分:自動變量,靜態(tài)變量.前者是按變量作用范圍來分的,而后者是按變量存儲方式來分的.
如果按存儲占用空間來分,可以是整型變量,字符型變量,浮點型變量等.當然還有數(shù)組,結(jié)構(gòu)體變量等.
C語言還有一個重要變量:指針變量.它存放的值是一個內(nèi)存地址.
操作系統(tǒng)變量
操作系統(tǒng)變量
C語言中變量名是有大小寫之分的,如SUN與sun就是兩個不同的變量名。
另一點,聲明變量時,可以不用聲明就直接賦值來決定變量類型的語言如(javascript,flash cs3.0以前,等),這類語言變量的聲明通常被稱為弱類型,而如(c++等)必須先聲明,后使用,而且聲明時必須確定變量類型,這種就是嚴格的數(shù)據(jù)類型.
變量有兩種類型:屬性變量和用戶自己建立的變量。
JavaScript
變量
正如代數(shù)一樣,JavaScript 變量用于保存值或表達式。
可以給變量起一個簡短名稱,比如 x,或者更有描述性的名稱,比如 length。
JavaScript 變量也可以保存文本值,比如 carname="Volvo"。
變量名稱的規(guī)則
變量對大小寫敏感(y 和 Y 是兩個不同的變量)
變量必須以字母或下劃線開始
注釋:由于 JavaScript 對大小寫敏感,變量名也對大小寫敏感。
實例
在腳本執(zhí)行的過程中,可以改變變量的值??梢酝ㄟ^其名稱來引用一個變量,以此顯示或改變它的值。
本例為您展示原理。
聲明(創(chuàng)建) JavaScript 變量
在 JavaScript 中創(chuàng)建變量經(jīng)常被稱為“聲明”變量。
您可以通過 var 語句來聲明 JavaScript 變量:
var x; var carname;
var x; var carname;
在以上聲明之后,變量并沒有值,不過您可以在聲明它們時向變量賦值:
var x = 5; var carname = "Volvo";
var x = 5; var carname = "Volvo";
注釋:在為變量賦文本值時,請為該值加引號。
向 JavaScript 變量賦值
通過賦值語句向 JavaScript 變量賦值:
x = 5; carname = "Volvo";
x = 5; carname = "Volvo";
變量名在 = 符號的左邊,而需要向變量賦的值在 = 的右側(cè)。
在以上語句執(zhí)行后,變量 x 中保存的值是 5,而 carname 的值是 Volvo。
向未聲明的 JavaScript變量賦值
如果您所賦值的變量還未進行過聲明,該變量會自動聲明。
這些語句:
x = 5; carname = "Volvo";
x = 5; carname = "Volvo";
與這些語句的效果相同:
var x = 5; var carname = "Volvo";
var x = 5; var carname = "Volvo";
重新聲明 JavaScript變量
如果您再次聲明了 JavaScript 變量,該變量也不會丟失其原始值。
var x = 5; var x;
var x = 5; var x;
在以上語句執(zhí)行后,變量 x 的值仍然是 5。在重新聲明該變量時,x 的值不會被重置或清除。
JavaScript算術(shù)
正如代數(shù)一樣,您可以使用 JavaScript 變量來做算術(shù):
y = x - 5; z = y + 5;
y = x - 5; z = y + 5
php中的變量類型
PHP 中的變量:變量用于存儲值,比如數(shù)字、文本字符串或數(shù)組。
一旦設(shè)置了某個變量,我們就可以在腳本中重復(fù)地使用它。
PHP 中的所有變量都是以 $ 符號開始的。
在 PHP 中設(shè)置變量的正確方法是:
$var_name = value;PHP 的入門者會忘記在變量的前面的 $ 符號。如果那樣做的話,變量將是無效的。
我們創(chuàng)建一個存有字符串的變量,和一個存有數(shù)值的變量:
不必向 PHP 聲明該變量的數(shù)據(jù)類型。
根據(jù)變量被設(shè)置的方式,PHP 會自動地把變量轉(zhuǎn)換為正確的數(shù)據(jù)類型。
在強類型的編程語言中,您必須在使用前聲明變量的類型和名稱。
在 PHP 中,變量會在使用時被自動聲明。
php 中的變量用一個美元符號后面跟變量名來表示。變量名是區(qū)分大小寫的。
變量名與 php 中其它的標簽一樣遵循相同的規(guī)則。一個有效的變量名由字母或者下劃線開頭,后面跟上任意數(shù)量的字母,數(shù)字,或者下劃線。按照正常的正則表達式,它將被表述為:'[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*'。
注: 在此所說的字母是 a-z,A-Z,以及 ASCII 字符從 127 到 255(0x7f-0xff)。
php 3 中,變量總是傳值賦值。那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味著,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。有關(guān)這種類型的賦值操作,請參閱表達式一章。
php 4 提供了另外一種方式給變量賦值:引用賦值。這意味著新的變量簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。這同樣意味著其中沒有執(zhí)行復(fù)制操作;因而,這種賦值操作更加快速。不過只有在密集的循環(huán)中或者對很大的數(shù)組或?qū)ο筚x值時才有可能注意到速度的提升。
使用引用賦值,簡單地將一個 符號加到將要賦值的變量前(源變量)。例如,下列代碼片斷將輸出“My name is Bob”兩次:
有一點重要事項必須指出,那就是只有有名字的變量才可以引用賦值。
變量的命名規(guī)則:
變量名必須以字母或下劃線 "_" 開頭。
變量名只能包含字母數(shù)字字符以及下劃線。
變量的存儲類別決定了變量中的數(shù)據(jù)在計算機內(nèi)存中的存儲位置。C語言中局部變量存放在動態(tài)存儲區(qū),全局變量或者靜態(tài)變量存放在靜態(tài)存儲區(qū)。下面是關(guān)于C語言變量的定義與使用,歡迎參考!
如果要為單片機控制系統(tǒng)編寫出高質(zhì)量的C語言程序,合理的定義并使用變量是非常重要的。程序是用來處理數(shù)據(jù)的,而變量就是用來存儲數(shù)據(jù)的。每定義一個變量,編譯器就會在系統(tǒng)的RAM中分配一個物理存儲區(qū)域。在單片機控制系統(tǒng)中,RAM資源是非常有限的,作為單片機程序員,絕對不能隨意的定義變量,需要精打細算合理定義。為了實現(xiàn)這個目標,必須要對變量的多個特性有深刻的認識。
變量特性:
第一、變量定義要選擇恰到好處的類型,變量的類型直接決定了它所存儲的數(shù)據(jù)取值范圍,這類似于我們生活中使用的各種容器,選擇合適的變量類型,不但能保證數(shù)據(jù)存儲安全,還能有效的節(jié)約系統(tǒng)資源;
第二、變量的作用范圍必須清楚,C語言最基本的功能單元是函數(shù),在函數(shù)內(nèi)部使用的變量是私有變量,只能在函數(shù)內(nèi)部使用。多個函數(shù)組成一個程序的功能模塊,并安置在某一個C文件中,在這些函數(shù)的頭部定義的變量是靜態(tài)變量(局部變量),這種類型的變量模塊內(nèi)部的函數(shù)都可以訪問。如果在模塊內(nèi)部聲明變量,并在該模塊的頭文件中導(dǎo)出,該類型變量就是全局變量,全局變量在整個工程中的所有函數(shù)都可以訪問;
第三、變量占用的RAM資源,私有變量是可以釋放的,靜態(tài)變量與全局變量是不可以釋放的。也就是說在程序運行的整個過程中,私有變量占用資源可以供不同的函數(shù)重復(fù)利用,而靜態(tài)變量與全局變量是完全被占用不能重復(fù)利用的;
第四、變量可以存放常數(shù),但因為單片機RAM資源有限,強烈建議不要用變量存放常量,而是在資源相對豐富的FlashROM中存放常量;
第五、局部變量與全局變量對于函數(shù)來說,訪問非常方便,但缺點顯而易見:訪問的函數(shù)越多,數(shù)據(jù)的安全性越低,一旦出現(xiàn)數(shù)據(jù)異常,很難排除問題。所以,請盡量減少局部變量與全局變量的使用;
第六、函數(shù)的型參個數(shù)盡量減少,這樣型參只會占用通用寄存器組來完成參數(shù)傳遞工作。如果參數(shù)過多,編譯器可能會被迫分配占用RAM資源,這樣不但參數(shù)傳遞效率變低,同時還會導(dǎo)致RAM資源浪費;
明確上述變量定義與使用特點后,在編寫程序的時候,一定要利用好這些特性并結(jié)合程序的特點,靈活的使用各種類型、各種作用范圍的變量,使程序在最大限度上得到優(yōu)化,使系統(tǒng)性能提升至最優(yōu)的狀態(tài),才是我們嵌入式開發(fā)者的終極目標!
拓展:C語言入門學(xué)習(xí)
什么人需要學(xué)習(xí)C語言?
從51JOB的統(tǒng)計數(shù)據(jù)來看,選擇C語言人才的企業(yè)多數(shù)以電子工程師、嵌入式工程師、硬件工程師、IOS工程師等為主,學(xué)歷本科以上相關(guān)專業(yè),三年以上工作經(jīng)驗,且外語水平要求至少四級以上。既然C語言學(xué)習(xí)者的就業(yè)門檻那么高,為什么還有很多人執(zhí)著的去學(xué)習(xí)C語言呢?總結(jié)而言,無外乎以下幾點原由:
1)C語言不是面向?qū)ο笳Z言。
因為這一點,任何學(xué)習(xí)C語言的人必須學(xué)會用函數(shù)思考問題。當你真正的去學(xué)習(xí)一門面向?qū)ο笳Z言時,就會有C語言的函數(shù)學(xué)習(xí)基礎(chǔ)去對比。這會使學(xué)習(xí)面向?qū)ο缶幊谈菀桌斫夂透袠啡ぁ?/p>
2)用C編程就像進行智力體操。
你要顧及到每一件事情,而這在很多其他語言中他會為你處理。你要管理指針,內(nèi)存分配,和內(nèi)存回收。你要明白如何處理串,還有動態(tài)數(shù)據(jù)。在其他語言中,所有這些對你來說是隱藏的。你不知道他們?nèi)绾芜\行,更不用說改變他們的運行方式了。你得到了使用的便利,失卻了對程序的控制和速度。很多情況下,這是筆值得的買賣。其他的情況下就不是這樣了。
3)不同情況下你會使用不同的編程語言。
某些情況下要求使用Lisp,其他的要Java,還有別的要C++。但是C是你堅實的基礎(chǔ)。你可能不會使用它做一些項目,但是它會幫助提高你的能力,熟練的用其他語言編程。
4)除了匯編語言之外,C代碼生成的程序比其他任何語言生成的程序來得更小和運行更快。
那么為什么不學(xué)匯編語言呢?匯編是一門學(xué)了很有用的.語言,但是它沒有C那樣的可移植性,并且其他流行的語言比如JAVA的語法是基于C的,而不是匯編。你仍然應(yīng)該學(xué)匯編,但它并不會證明它會像學(xué)C那樣有用。
5)如果你想要寫一個視頻游戲引擎或操作系統(tǒng),你會需要C。
你不能使用C#, Java, 或 Basic來完成這些編程任務(wù)。
C語言的發(fā)展史:
C語言是一種計算機程序設(shè)計語言,它既具有高級語言的特點,又具有匯編語言的特點。它由美國貝爾研究所的D.M.Ritchie于1972年推出,1978年后,C語言已先后被移植到大、中、小及微型機上,它可以作為工作系統(tǒng)設(shè)計語言,編寫系統(tǒng)應(yīng)用程序,也可以作為應(yīng)用程序設(shè)計語言,編寫不依賴計算機硬件的應(yīng)用程序。它的應(yīng)用范圍廣泛,具備很強的數(shù)據(jù)處理能力,不僅僅是在軟件開發(fā)上,而且各類科研都需要用到C語言,適于編寫系統(tǒng)軟件,三維,二維圖形和動畫,具體應(yīng)用比如單片機以及嵌入式系統(tǒng)開發(fā)。
我適合學(xué)習(xí)C語言嗎?
首先我們要認清一個事實:C語言工作者只是眾多從事軟件開發(fā)者中的一小部分,在深圳這樣一個IT企業(yè)云集的大城市,使用其它語言從事軟件開發(fā)的工作者多如牛毛,薪資待遇不比從事C語言開發(fā)的人低,當編程愛好者在選擇第一個編程語言時,C語言不一定是首先。我適合學(xué)習(xí)C語言嗎?解決這個問題,先回答以下幾個問題:
1)你學(xué)習(xí)C語言的目的是什么?如果是想從事這方面的工作,那么請義無反顧的堅持下去,推薦你在《微機原理》、《計算機組成原理》和《計算機系統(tǒng)結(jié)構(gòu)》三本書中選一本配合《C語言程序設(shè)計》來看,這樣可以融匯貫通,讓你對編程有更深入更系統(tǒng)化的理解。而這種理解對計算機類學(xué)科的學(xué)習(xí)來說很重要。
2)您具備學(xué)習(xí)C語言的條件嗎?由于入職C語言編程的企業(yè)對入職者的要求比較高,在沒有編程工作經(jīng)驗前提下多數(shù)想通過自學(xué)進入類似企業(yè)的人幾乎為零,包括很多計算機專業(yè)畢業(yè)的大、中專畢業(yè)生在校期間都會學(xué)到C語言,畢業(yè)出來后依然云里霧里。C語言的開發(fā),需要在實際工作中才能快速掌握。同時,英語(從事C語言開發(fā)需要經(jīng)常查閱英文資料,尤其是單片機領(lǐng)域)、學(xué)歷、數(shù)學(xué)算法、極強的邏輯思維能力等等也是讓多數(shù)人望而卻步的門檻。
函數(shù)就是一個動作,你要計算機做的動作,或者一個加工廠!變量就是存數(shù)據(jù)的,把數(shù)據(jù)給函數(shù)這個加工廠處理完了之后它又可以把處理后的東西放在變量里面給你返回來。而字符串屬于變量的一種!字符串也可以是常量!變量就是計算機可以去改變它的值,常量計算機是不可改變的!