91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中定義與聲明有什么區別

發布時間:2022-07-07 14:06:35 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

今天小編給大家分享一下C語言中定義與聲明有什么區別的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

一、變量的聲明與定義

首先,舉個簡單的例子:

int a;
extern int b;

這里的兩個變量,哪個是聲明?哪個是定義?

為解決這個問題,我們必須要知道聲明與定義的含義。

聲明:聲明是用來告訴編譯器變量的名稱和類型,而不分配內存。

  • 告訴編譯器,這個變量或者對象已經匹配到一塊內存空間上了,下面代碼中用到的變量或者對象會在別的地方定義,但此處并不分配內存,所以聲明可以出現多次;

  • 告訴編譯器,這個名字已經被預定了,別的地方不能再用它作為變量或者對象名。這種聲明最典型的例子就是函數參數的聲明。

定義:就是編譯器為一個變量或者對象分配到一塊內存空間上,并給它取名字。這個名字就是變量名或對象名,所以同一名字的變量或者對象只能被定義一次,當多次被定義的時候,編譯器就會提示重復定義同一變量或對象的錯誤。

定義是為了給變量分配內存,可以為變量賦初值。

在上述代碼中,extern 是一個關于聲明的關鍵字,放在變量或者函數前用于聲明,用來說明”此變量或者函數在別處定義“。

注意的是:即使使用了extern,如果給變量附了值,就是定義了。

我們現在知曉了聲明和定義的含義,那么對于上面的例子,我想答案早已浮出水面。

int a;			//此語句為定義
extern int b;	//此語句為聲明

示例:

extern int a;		//此語句為聲明
extern int b = 10;	//此語句為定義
typedef int INT; 	//此語句為聲明
struct Node; 		//此語句為聲明
int c ;				//此語句為定義
struct Node {		//此語句為定義
    int left;
    int right;
};

上述代碼中,變量名c,其類型為int,配分4字節的內存空間(不同編譯器可能會有差異)。

二、函數的聲明與定義

首先,我們同樣先了解一下它們的含義

函數聲明:告訴編譯器,函數的名稱、參數類型和數量以及函數返回值的類型。

函數定義:為了給函數分配內存空間。

例如:

int Max(int x, int y);	//此處聲明了一個函數,其函數名為Max,參數為int x,int y,返回類型為int
int Max(int x, int y) {return x > y ? x : y;}	//此處定義了一個函數

函數的定義包含了函數的具體實現。

函數只要有實現(存在函數體{…})即為定義,否則為聲明。

注:為什么這里的函數聲明不用寫extern?函數一般是全局的,即他的可見性是最大范圍的,在別的文件也可以訪問這個函數,其實函數默認就是extern,所以可以不寫。

另外,當在函數前加static 時,則函數的作用域僅局限于本文件。

再來看一段代碼

/*  basic_stdy.h */
#ifndef _BASIC_STDY_H_
#define _BASIC_STDY_H_
//extern int a;		//在頭文件中聲明,必須加上extern,否則就是重定義
//void fun();		//不用加extern也可以
#endif
/*  basic_stdy.cpp */
#include"basic_stdy.h"
#include<iostream>
using namespace std;
int a(2);
void fun(){
            cout << a <<endl;
}
/* main.cpp */
#include<iostream>
//#include "basic_stdy.h"
using namespace std;
extern int a;		//ok不用包含頭文件, 變量只要聲明即可
extern void fun();	//ok不用包含頭文件, 函數只要聲明即可
int main(int argc,char **argv){
	cout << a << endl;
	fun();
	system("pause");
	return 0;
}

上述代碼中一共有三個文件basic_stdy.h、basic_stdy.cpp和main.cpp,要在main.cpp中使用其他文件中定義的變量和函數,有以下兩種實現方式:

1、在basic_stdy.h頭文件中,聲明他們,然后在main.cpp中去包含頭文件;

2、在main.cpp中直接extern。

以上就是“C語言中定義與聲明有什么區別”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

固镇县| 湖北省| 正宁县| 开远市| 分宜县| 阜新市| 岑巩县| 雷州市| 阿荣旗| 水富县| 吉林省| 太白县| 巨鹿县| 丰顺县| 西安市| 宁武县| 阳谷县| 个旧市| 阳原县| 朝阳区| 昌宁县| 革吉县| 六盘水市| 育儿| 清水县| 曲周县| 萨迦县| 台南市| 乐业县| 高唐县| 铜陵市| 浮山县| 新竹县| 梁河县| 崇仁县| 基隆市| 东源县| 唐山市| 顺昌县| 富蕴县| 白城市|