C語言extern (extern關鍵字基本解釋)

1 基本解釋  extern可以置於變數或者函數前,以標示變數或者函數的定義在別的檔案中,提示編譯器遇到此變數和函數時在其他模組中尋找其定義。  另外,extern也可用來進行連結指定。2 問題:extern 變數  在一個源檔案裡定義了一個數組:char a[6];  在另外一個檔案裡用下列語句進行了聲明:extern char *a;  請問,這樣可以嗎?   答案與分析:  1)、不可以,程式運行時會告訴你非法訪問。原因在於,指向類型T的指標並不等價於類型T的數組。extern char

C語言結構體儲存 記憶體對齊問題

1)記憶體對齊產生的原因記憶體空間是按照位元組來劃分的,從理論上對記憶體空間的訪問可以從任何地址開始。但是在實際上不同架構的CPU為了提高訪問記憶體的速度,就規定了對於某些類型的資料只能從特定的起始位置開始訪問。這樣就決定了各種資料類型只能按照相應的規則在記憶體空間中存放,而不能一個接一個的順序排列,浪費了小部分儲存空間。2)對齊原則一個變數佔用 n個位元組,則該變數的起始地址必須能夠被n整除,即:存放起始地址% n =

c語言main函數

C的設計原則是把函數作為程式的構成模組。main()函數稱之為主函數,一個C程式總是從main()函數開始執行的。一、main()函數的形式          在最新的 C99 標準中,只有以下兩種定義方式是正確的:        intmain( void )--無參數形式          {               ...              return 0;              }                      int main( int argc,

C#揭密 (和C#首席設計師的對話)

C#揭密 (C#首席設計師的訪談錄)小氣的神  2001.08.12本來想轉載一篇Borland CEO Dale L. Fuller的訪談錄,不過發現了這一篇文章,也是一個訪談錄。比較起來我更喜歡這篇有關C#的,雖然很長但沒有Borland的那篇這麼市場了,那麼關心以後的市場,自己公司的發展方向,特別時當Microsoft表明不再支援和預裝JVM了之後,Borland將如何發展等等佔了大量的篇幅。這篇《An Interview with Microsoft Chief Architect

我的C語言隊列練習

資源下載(包含所有代碼、MakeFile、以及一份簡單描述分析思路和流程圖的WORD文檔):http://download.csdn.net/detail/htianlong/4443226/*************************************************************題目:電話客戶服務類比    1、  

C語言中程式調試和宏提示

1)列印檔案,函數和程式行        在linux使用GCC編譯器的時候,gcc在編譯的過程中,會產生一些宏,可以使用這些宏分別列印當前源檔案的資訊。主要有當前檔案(__FILE__,為字串型char *),當前啟動並執行函數(__FUNCTION__,為字串型char *)和當前的程式行(__LINE__,為整型int)。使用執行個體如下:printf("file:%s    function:%s    line:%d\n",__FILE__, __FUNCTON__, __LINE);

C#恢複資料庫之後,出現錯誤transport-level error has occurred when sending the request to the server

當操作了資料庫的恢複時,繼續其他動作的時候,系統跑出一個錯誤:transport-level error has occurred when sending the request to the server這個情況是通常是因為SQL

C#備份資料庫時,出現,無法開啟裝置’**.bak’。出現作業系統錯誤5

C#備份資料庫的時候,出現:無法開啟裝置'**.bak'。出現作業系統錯誤5這是因為NTFS格式設定了許可權,限制了或者沒有開放SQL的寫入許可權。解決方案:1、檢查要備份到的地址。   

關於C# this 指標

 This關鍵字的另一種用法是使用一項名為建構函式鏈的技術來設計類。當定義了多個建構函式時,這個設計模式就會很有用。由於建構函式通常會驗證傳入的參數來強制各種商務規則,所以在類的建構函式集合中經常會找到冗餘的驗證邏輯。考慮如下更新後的Motocycle:Class Motorcycle{Public int driverIntensity;Public string driverName;Public Motorcycle(){}//冗餘的建構函式邏輯Public Motorcycle(int

《C++Primer Plus》學習筆記(六)

1、定義函數1、C++對於傳回值有一定的限制:不能是數組,但可以是其他任何類型——整數、浮點數、指標,甚至可以是結構和對象(雖然不能直接返回數組,但是將數組作為結構或對象部分來返回)。2、函數如何傳回值的?函數通過傳回值到指定的CPU寄存器或記憶體單元中來將其返回。隨後,調用程式將查看該記憶體單元。調用函數是通過函數原型的定義得知該記憶體單中繼存放區的資料類型。2、函數原型的功能:1、編譯器正確處理函數傳回值。2、編譯器檢查使用的參數數目是否正確。3、如果不正確,則轉換成正確的類型(如果可能的話

《C++Primer Plus》學習筆記(二)

1、OOP的本質設計並擴充自己的資料類型。2、C++ 命名規則:1、只能使用字母,數字和底線_   (-、—等均不是)。2、第一個字元不能為數字。3、區分大小寫4、以兩個底線  或者  底線加大些字母打頭的名稱被保留給(編譯器和使用的資源)使用。以底線開頭 被保留用作全域識別碼。5、名稱長度沒有限制。3、符號常量——前置處理器方式#define INT_MAX 32767#define 也是一種前置處理器編譯指令。工作方式與文字編輯器的全域搜尋和替換命令相似。修改後的程式在完成這項替換後被編譯。

《C++Primer Plus》學習筆記(四)

1、遞增和遞減操作符同一條語句對同一個值不要使用多次的遞增遞減操作。如:x = 2*x++ *(3 - ++x);

《C++Primer Plus》學習筆記(五)

1、邏輯運算式1、||操作符是一個順序點(sequence point)。先修改左側的值,再對右側的值進行判斷。如:i++ < 6|| i == j先將i++ 再判斷i == j;2、&&操作符的優先順序低於關係操作符。2、簡單的檔案輸入、輸出假設有如下範例輸入行: 38.5   19.21、char ch; cin >> ch這裡儲存的不是3,而是字元3的編碼。2、int n; cin >> n;cin 將不斷讀取,直到遇到非數字字元。比如這裡的.

c++ 如何將一個檔案夾裡的所有檔案追加到另一個檔案中

方法:  1、開啟A檔案,準備追加資訊。      fin.open(file_Name, ios_base::app);2、依次開啟檔案夾中的檔案,將內容追加到A中。使用FindFirstFile()跟FindNextFile();VC聲明HANDLE FindFirstFile(LPCTSTR lpFileName, // file nameLPWIN32_FIND_DATA  lpFindFileData // data buffer );參數說明     HANDLE hFindFile

《C++Primer Plus》學習筆記(一)

1、函數頭(作為介面)函數頭描述函數與調用它的函數頭之間的介面。如main():該函數頭描述的是main()和作業系統之間的介面。int main()的傳回值(退出值)給誰?答:返回給作業系統。2、C++ 前置處理器C++和C一樣,也使用了一種前置處理器,該程式在進行編譯之前對源檔案進行處理。如:#include<iostream>該編譯指令導致前置處理器將iostream檔案的內容添加到程式中(取代程式中的程式碼#include<iostream>)。3、類簡介類是使用

C編程小技巧——結構體強制類型轉換

問題前些天看一款資料庫文法解析器的代碼,其中的詞法分析文法解析階段,利用一個結構體儲存所解析的SQL語句的類型,然後根據這個類型將改結構體強制轉換為對應的另一結構體並賦值給他,以便做進一步的執行工作。舉個簡單的例子:儲存文法解析後資料的結構體(注意,其只有一個元素)為:struct analyse{int type;};我們約定的不同的type代表不同的SQL操作,假如type=1時表示alter table操作,type=2時表示select操作,type等於3時表示create

c編程技巧——擷取可用的處理器(CPU)核心數

需求我們在編程時,尤其是在涉及到系統內容的程式開發中,可能會需要動態獲得當前機器中可用的CPU核心數。例如,當我們需要做並行計算時,我們可能會根據CPU核心數來決定並行度,因此我們需要在C程式中獲得當前機器中可用的CPU核心數。方法為了跨平台的需要,我們需要同時考慮在不同平台下擷取機器處理器核心數的方法。在這裡我們考慮Linux與Windows兩個平台,不同的平台有不同的方法來擷取處理器核心數。在Windows平台下,我們可以使用GetSystemInfo(

C語言中有沒有bool類型?

問題首先請大家回想一下,在你們所編寫的C程式中,是否使用過bool(布爾)類型?bool類型一般用來表示真假,是程式設計中一個很基本的資料類型。但是,C語言裡面並不直接支援bool類型。一些初學C語言,或者是對C語言不是很精通的朋友肯定覺得很奇怪,為什麼在C++,JAVA等語言裡使用的bool類型,在C語言裡無法使用了呢?問題解析bool類型的變數,為0時表示為假,為非0時表示為真。但是原始C語言中並不支援bool類型,若需要使用bool類型可以借用int類型自己定義一下,例如:typedef

關於C語言中的宏的一點點討論

前言:熟悉C語言的朋友應該對宏不陌生, 宏在C語言程式開發中是經常使用的,使用其的主要目的是方便程式員的編程工作,並且能在一定程度上提高程式的效率。C語言中提供的宏定義命令是#define。下面就使用宏的幾個小細節進行一些討論。1,宏中使用()在宏中,盡量多使用(),不要覺得無所謂或者覺得使用不使用沒有什麼影響。請切記,在宏中盡量多使用(),這樣才能盡量的保證你的宏的正確性。舉個例子:#define CAL(x,y)   x+yCAL(2,4)×CAL(2,5)程式員的本意可能是要計算(2+4)

C語言利用setjmp/longjmp實現模仿C++的層次異常處理機制

傳統C語言異常處理機制傳統的C語言異常處理,一般情況下為被調用者通過設定不同的傳回值或者設定一個表示錯誤的全域變數值,以代表執行正常或者是發生了各種各樣的錯誤,異常,警告等等。而調用者則通過被調用者的傳回值來判斷是否發生了異常,並對異常進行處理。以下是這種處理方式的簡單樣本:fun1(){....int result=fun2();switch(result){case 1 ....case 2 ........}....}fun2(){.... .... return -1;........

總頁數: 4314 1 .... 1813 1814 1815 1816 1817 .... 4314 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.