close

本文目錄

 

前言


各位好~今天要來教各位一些變數的概念,我相信剛想進入程式領域的人都有一個問題,變數?那是什麼可以幹嘛?很重要嗎?事實上還真的挺重要的,如果你無法釐清變數的應用,後面就都不用玩了,所以這篇是來告訴大家一些基礎工法。

一、變數?什麼是變數?


變數是可以儲存你想要儲存的東西而且是可以改變的,因為是"變"數嘛,這裡來跟大家介紹C語言中常用變數和代表什麼。

 

型態 中文Define 英文Define 儲存資料樣式
int 整數 Integer 1000、-1000、13579...
float 浮點數 Float point 3.5674、-6.78、5.4...
char 字元 Character 'c'、'B'、'#'...
string 字串 String "Hello"、"YES~~","@@#$"...
bool 布林 boolean true,false

想當然這些只是常用變數,其實還有double之類的但因為不常用到所以這裡不多做介紹

#注意int型別只能儲存範圍-2147483648 ~ 21474836472的數字喔

二、變數宣告


​​​​​​在你要使用變數時你必須跟電腦講一下不然他不會知道的,你要請它幫你準備記憶空間。這件事就叫做變數宣告。

C語言的變數包含了幾點要素:

  • 變數型態
  • 變數名稱
  • 你所要賦予變數的值
  • 可視度(區域變數or全域變數)

變數是資料的標籤,而非資料本身。程式很大一部分是在操作資料,變數本質上是用來操作資料的一種語法特性。

以下變數x的型別是int,值為10

int x = 10;

以下變數h的型別是char,值為'A'

char h = "A";

他也可以一次宣告很多同種型別的變數

以下變數A,B,C的型別是int,不定義值

int A,B,C;

三、使用&輸出變數


  • 變數宣告後就可以自由使用
  • 只有在宣告變數時要打上型態,使用變數時不用再定義一次型態
  • //代表註解,代表本列之後的部份被程式略過

我們以簡短的例子來看如何使用變數:

#include <stdio.h>                    
#include <stdlib.h>                   

int main(void)                    
{                                  
    int a = 100;                      //變數a
    int b = 50;                       //變數b

    printf("a + b = %d\n", a + b);    //a+b
    printf("a - b = %d\n", a - b);    //a-b

    return 0;                       
}                                   

先將變數a和變數b各自定義一個值,這是由程式設計者自行定義的,所以要先宣告才能使用。

接著再把變數a和變數b進行加法和減法運算帶入將運算當成參數結果傳入 printf() 函式。

這兩個變數本身只是一個符號,我們透過這兩個變數操作整數形態資料 100 和 50

四、宣告常數


在宣告變數後,常常會遭到預期外的修改。如果你確認這變數在程式中不會再改變的話,可以使用const保留來阻止改變此變數

可參考下面例子:

const int p = 1234567;
    
p = 45678;  // 錯誤!!!

我們宣告了型別為int的變數p,因為我們讓p是為定值,所以加上const。之後我們如果要修改p的值,就話發生程式錯誤,這時候就知道code出錯了。

五、區域變數是什麼?全域變數是什麼?差在哪裡?


  • 區域變數
  • 全域變數

變數是在程式執行過程中暫時存放資料的記憶空間,對應變數名稱就是指向該空間的識別代號。變數都有自己的有效範圍,如果是宣告在x()函式內的變數,則其有效範圍只在該函數裡,離開這個範圍─譬如說在別的函式,就不能夠使用這個變數。這些僅存活在函式內部的變數,就稱為區域變數(local variable)。

例如區域變數(此變數K即是在函數中才能使用)

int main(void)
{
    int K = 3456;

    return 0;
}

 

不同於區域變數,如果我們把一個變數宣告在所有的函式之外─包含main()函式,那麼我們就可以在所有的函數內共同使用這個變數,我們可以在A函式內部指定一個值給這個變數,而在函式B內部將這個值輸出。這樣的變數就稱為全域變數(global variable),一旦程式配置了一個全域變數的記憶空間,這個記憶空間在程式執行過程中任何時間位置都將是有效的,不像區域變數只在特定的程式區塊內(如函式區塊、if條件區塊或for迴圈區塊等等)才有效。

但全域變數要小心使用,我個人經驗是盡量不要用,因為有時候程式一多幾千行後定義太多全域變數會忘記哪裡呼叫過或去改過,所以要配合著區域變數去寫,這才能有要區隔什麼是只有這個區塊需要的,什麼是很多區塊都需要使用到的。

例如全域變數(此變數count即是在函數中才能使用)

#include <stdio.h>
#include <stdlib.h> 

void index();         //函式原形宣告
int count = 0         //宣告全域變數

int main(void)
{
    index(); 
    printf("count = %d\n",count);   
    return 0;
}

void index()
{
    count = count + 1
}

六、補充


int main(void)
{
    int n = 3;
    
    n = 5;
    n = 300;

    printf("n = %d\n",n);  
    return 0;
}

上述程式請問會印出什麼東西?給你5秒鐘思考~

 

答案是:n = 300

有些人一定會有疑問不知道為什麼是這樣,我現在就來解釋一下~~

一開始的變數n是為3但是下面 n = 5 n被替換成5了,為什麼是5?,而不是8,因為"="只是把變數為你定義的值而已沒有任何加減運算也沒有疊加,如果要的話就要用運算式,所以輸出 n = 300 就是這樣來的,因為很多人有這種狀況所以來說明一下~~

 

本次的經驗教學分享就到這,感謝各位~

後續還會有更多經驗教學出來,還有更難的實際能運用在工作上的技能,感謝各位的關注~~

arrow
arrow
    創作者介紹
    創作者 lindong 的頭像
    lindong

    lindong的部落格

    lindong 發表在 痞客邦 留言(0) 人氣()