變數的宣告說明符和宣告符以及宣告和定義的區別

2021-10-02 22:24:44 字數 1768 閱讀 4277

宣告有兩種,一種是定義性宣告簡稱定義,還有一種就是宣告在使用變數之前一定要對其進行宣告(專門為編譯器而做),為了宣告變數,首先要指定變數的宣告說明符宣告符有時也會賦予初始化值,然後再加上分號。注意宣告一定要放在使用該變數的語句前面,標準c更加嚴格,必須要放在程式的開頭處。看下面乙個例子:

auto

const

char ch;

粉紅色的為宣告說明符,灰色的為宣告符(在規則內可以隨便寫)。

0.1.2.0 宣告說明符

宣告說明符分為三類:

1、儲存型別:auto,static,extern,register。(注意在宣告中最多出現一種儲存型別,如果有則必須把它放在最前面)

2、型別限定符:const,volatile,restrict(c99).

3、型別說明符:void,char,float,int,double…

這些符號到底影響什麼東西哪?沒錯就是變數的性質,請看下列:

儲存型別

注意:register 變數必須是乙個單個的值,並且其長度應小 於或等於整型的長度。 而且 register 變數可能不存放在記憶體中,所以不能用取址運算子「&」 來獲取 register 變數的位址

型別限定

型別說明符(空白為不確定)

0.1.2.1 宣告符

宣告符包含識別符號,還包含識別符號前面可能帶有的*號,後面可能帶有的[ ]和()。看下面幾個例子。

\\指標

int*p;

int(

*p)[2]

;int

(*p)

(int);

int*

*p;\\陣列

int a[10]

;int a[10]

[10];

int*a[10]

;\\函式

intf

(void);

\\結構

struct

;

以上是幾種比較常見的宣告,再看下面這個例子

int

(*p[10]

)(int)

;

對於這種一眼看不出來的宣告我在 一本書上學到乙個方法不錯,這個方法有兩個要點:

1、始終由內往外讀宣告符。

2、在做選擇時,始終使[ ]和()大於*

我們來分析一下下面的例子:

所以p為儲存指向引數型別為int型返回型別為int型函式指標的陣列。

C語言整型宣告方式及說明符

說明符 包含了一些關鍵字,用於描述被宣告的識別符號的基本型別。如 signed long int等。signed關鍵字一般只用於char型別,因為其他型別在預設的情況下都是有符號數,signed將這個範圍擴至 127 127。而char的預設範圍因編譯器而異。所以char可能等於signed cha...

8 3 宣告符的含義

1 宣告符列表出現在可選的 第7章 decl specifier seq 7.1 之後。每個宣告符只能包含乙個 declarator id 它對被宣告的識別符號進行命名。除了特殊函式 12.3,12.4,13.5 宣告 模板特化或區域性特化 14.7 宣告之外,declarator id 中的unq...

報錯 此宣告沒有儲存類或型別說明符

在學習案例的時候遇到乙個知識點,順手在原始檔空白處編輯了一段,發現vs開始報錯 嚴重性說明 錯誤 活動 此宣告沒有儲存類或型別說明符 在函式體外進行賦值的時候就會出現這個問題。比如out type convert const in value t sample2 double d string sa...