C/C++ 定義與聲明詳解(轉)

来源:http://www.cnblogs.com/Champion-L/archive/2017/07/18/7202714.html
-Advertisement-
Play Games

轉自:http://blog.csdn.net/xiaoyusmile/article/details/5420252 1. 變數的定義、聲明 變數的聲明有兩種情況: 一種是需要建立存儲空間的。例如:int a。在聲明的時候就已經建立了存儲空間。這種聲明是"定義性聲明(defining declar ...


 

  轉自:http://blog.csdn.net/xiaoyusmile/article/details/5420252

 

  1. 變數的定義、聲明

  變數的聲明有兩種情況:

  一種是需要建立存儲空間的。例如:int  a。在聲明的時候就已經建立了存儲空間。這種聲明是"定義性聲明(defining declaration)",即我們平時所說的“定義”。

  另一種是不需要建立存儲空間的,只是告訴編譯器某變數已經在別處定義過了。例如:extern int a。其中,變數a是在別處定義的。這種聲明是"引用性聲明(referncing declaration)",即我們平時所說的“聲明”。

 

  從廣義的角度來講,聲明中包含著定義,但是並非所有的聲明都是定義。即,定義性聲明既是定義又是聲明,而引用性聲明只是聲明。例如:int a。它既是聲明,同時又是定義。然而對於 extern int a 來講,它只是聲明不是定義。

 

  一般的情況下我們常常這樣敘述,把建立空間的聲明稱之為”定義”,而把不需要建立存儲空間的稱之為”聲明”。很明顯這裡指的聲明是範圍比較窄的,也就是說引用性的聲明。

 

  例子:

  int a; //定義性聲明,分配存儲空間,初值不確定

  int b = 0; //定義性聲明,分配存儲空間,賦初值

  extern int c; //引用性聲明,不分配存儲空間,只是告訴編譯器這個變數已經在別處定義過了

 

  2. 函數的定義、聲明

  函數的定義和聲明也是一樣,定義需要分配存儲空間;聲明只是告訴編譯器這個函數已經在別處定義過了。

  函數的定義和聲明比較好區分。有函數體的即為定義,不帶函數體即為聲明。

 

  例子:

  //聲明

  double sqrt(double x);

 

  //定義

  double sqrt(double x)

  {

          return x*x;

  }

 

  3. 定義與聲明的區別

  (1)是否需要分配存儲空間。

  (2)在一個作用域中可以重覆聲明,但不能重覆定義。這是由(1)決定的,可以重覆幾次告訴編譯器某個變數、函數已經在別處定義了,但不能重覆多次地讓編譯器為同一個變數、函數分配不同的存儲空間。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • HTML5 :規則, 瀏覽器的通用規則 1 1、規則, 瀏覽器的通用規則 2 2、開發者: 3 學習html 規則 4 開發後臺程式 5 - 寫html文件 (當作模板) 6 - 資料庫獲取數據,替換到指定的HTML文件中的位置 7 3、本地測試 8 - 找到文件,用瀏覽器直接打開 9 - pych ...
  • Java編程思想第4版學習筆記(零) 前言 這個筆記本主要記錄了我在學習Java編程思想(第4版,中文版)的過程中遇到的重難點及其分析。主要參考了C++11版本的C++語言,對比了它們不同的部分。 《Java編程思想(第四版)》早在2007年就已經出版了,時值Java SE5~Java SE6升級的 ...
  • 目前國內常見的第三方開放平臺有: QQ開放平臺 微信開放平臺 新浪微博開放平臺 我們可以通過集成這些第三方平臺來實現: 第三方登錄 內容分享到第三方平臺 獲取第三方平臺用戶資源 ...... 下麵以新浪微博開放平臺為例看下Java系統具體的集成步驟,QQ和微信類似,只需少許修改(具體請參考源碼中示例 ...
  • 簡單看一下描述,例子最重要。 1、getPath(): 返回定義時的路徑,(就是你寫什麼路徑,他就返回什麼路徑) 2、getAbsolutePath(): 返回絕對路徑,但不會處理“.”和“..”的情況 3、getCanonicalPath(): 返回的是規範化的絕對路徑,相當於將getAbsolu ...
  • 上周, 我們談論了關於Java8的新特性有那些, 什麼是函數式編程, 什麼是Lambda表達式, 這周讓我們繼續談論這些新特性.本周, 我們會聊一下什麼是Stream API, 以及什麼是Optional."Stream API你讓我想重寫我以前的所有代碼","使用Optional讓你的應用從此不再... ...
  • 題目鏈接 Problem Description You are a rich person, and you think your wallet is too heavy and full now. So you want to give me some money by buying a lov ...
  • 什麼是泛型,有什麼用? 先運行下麵的代碼: 上面的代碼稍微修改下: 對比上面的代碼,沒加入泛型的時候,在程式運行期才發現問題,而加入了泛型則在程式編譯期就發現了,這就是泛型的優勢所在。 在第二段代碼中,泛型就好象是在告訴編譯器:這裡聲明的變數c只跟Date類型進行比較,如果跟別的類型比較,那麼就不能 ...
  • Description osu 是一款群眾喜聞樂見的休閑軟體。 我們可以把osu的規則簡化與改編成以下的樣子: 一共有n次操作,每次操作只有成功與失敗之分,成功對應1,失敗對應0,n次操作對應為1個長度為n的01串。在這個串中連續的 X個1可以貢獻X^3 的分數,這x個1不能被其他連續的1所包含(也 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...