C語言是不是隻能使用數據類型的關鍵字來定義變量?為什麼?

星沉大海3


c語言大部分時候,只能用數據類型關鍵字來定義變量,如:int,long int,double void等。但很多時候也可用其它類型關鍵字,舉例如下:

如:

const char cosin=1;它表示cosin值在程序中只能引用,不能改變,在程序中經常用到。

簡化,把char取掉,寫成:

const cosin=1;

編繹也是正確的,執行也沒問題。

這說明不用數據類型char也是可以的。

同理,const cosin=0.5498654;

也同樣執行過確。

2,sizeof:計算數據類型長度

如:

return(sizeif(a));

返回類型可以是int,也可以是其它。

3,typedef:

typedef struct

{

int a;

bool c;

}astruct

那麼,在別的地方可直接這樣定義一個結構:

astruct struct1;

4,extern

函數asint()

在另外一個文件中

extern asint()

總結:關鍵字很多,用在專用場合。


beijingwanger


我作為一個學過多種編程語言的人,我來回答下這個問題吧。

與python比較

C語言只能使用數據類型的關鍵字來定義變量,這個主要和變成語言的設計有關,每個語言的編譯器、解釋器是不同的,如果不加關鍵字,編譯器、解釋器是無法識別的。比如python語言是一中更加簡潔的語言,這一種語言它的編譯器、解釋器會自動識別類型,所以不需要。

需要類型的原因

但是C語言在設計的時候並沒有自動識別的功能,所以需要我們加關鍵字進行有效的區別。因為:

1,編譯器需要知道變量需要多大的內存空間;
2,編譯器需要知道如何訪問變量。

C中定義數據類型是為了容易編程,定義了數據類型之後又定義了數據類型之間的各種運算,這樣對編程人來說就會方便很多,如果不定義數據類型,那麼數據之間的差別只有位不同而已,這樣如果要定義一個字符變量,你首先要去申請一個8位的內存,再去按ASCII碼對其進行賦值,這樣對編程人員來說是很恐怖的。

附錄

另,轉述下 Edwin Brady 在《Type-driven Development with Idris》中的說法,類型有以下幾個重要角色:

  1. 對機器而言,類型描述了內存中的電荷是怎麼解釋的。
  1. 對編譯器或者解釋器而言,類型可以協助確保上面那些電荷、字節在程序的運行中始終如一地被理解。
  1. 對程序員而言,類型可以幫助他們命名、組織概念,幫助編纂文檔,支持交互式編輯環境等。

希望對你有幫助,歡迎討論留言!


皇德華叫獸


是的,任何變量都需要有一個明確的類型,原因如下:

1,編譯器需要知道變量需要多大的內存空間;

2,編譯器需要知道如何訪問變量,如支持什麼樣的操作符等。

當然在 C 裡面你可以給已有的類型定義別名,如:

typedef int 整數;

整數 i = 123;

別名可以是任何符合C語法規範的名字。

也可以給用於自定義類型命名,如:

typedef struct tagStudent

{

int id;

char* name;

} Student;

這裡定義了一個結構體 ,並定義了一個別名。


分享到:


相關文章: