1. 程式人生 > >我們程式設計吧 之 C++學習手冊v0.1

我們程式設計吧 之 C++學習手冊v0.1

我們程式設計吧 之 cpp 學習手冊

* Version 0.1 *

轉義字元的使用

參考程式escape_char.cpp

typedef與#define 的區別

typedef的用法
typedef常用來定義一個識別符號及關鍵字的別名,它是語言編譯過程的一部分,但它並不實際分配記憶體空間,例項像:

typedef    int       INT;
typedef    int       ARRAY[10];
typedef   (int*)   pINT;

typedef可以增強程式的可讀性,以及識別符號的靈活性,但它也有“非直觀性”等缺點。

#define的用法


#define為一巨集定義語句,通常用它來定義常量(包括無參量與帶參量),以及用來實現那些“表面似和善、背後一長串”的巨集,它本身並不在編譯過程中進行,而是在這之前(預處理過程)就已經完成了,但也因此難以發現潛在的錯誤及其它程式碼維護問題,它的例項像:

#define   INT             int
#define   TRUE         1
#define   Add(a,b)     ((a)+(b));
#define   Loop_10    for (int i=0; i<10; i++)

typedef與#define的區別
從以上的概念便也能基本清楚,typedef只是為了增加可讀性而為識別符號另起的新名稱(僅僅只是個別名),而#define原本在C中是為了定義常量,到了C++,const、enum、inline的出現使它也漸漸成為了起別名的工具。有時很容易搞不清楚與typedef兩者到底該用哪個好,如#define INT int這樣的語句,用typedef一樣可以完成,用哪個好呢?我主張用typedef,因為在早期的許多C編譯器中這條語句是非法的,只是現今的編譯器又做了擴充。為了儘可能地相容,一般都遵循#define定義“可讀”的常量以及一些巨集語句的任務,而typedef則常用來定義關鍵字、冗長的型別的別名。
巨集定義只是簡單的字串代換(原地擴充套件),而typedef則不是原地擴充套件,它的新名字具有一定的封裝性,以致於新命名的識別符號具有更易定義變數的功能。請看上面第一大點程式碼的第三行:
typedef (int*) pINT;
以及下面這行:

#define    pINT2    int*

效果相同?實則不同!實踐中見差別:pINT a,b;的效果同int *a; int *b;表示定義了兩個整型指標變數。而pINT2 a,b;的效果同int *a, b;表示定義了一個整型指標變數a和整型變數b。
注意:兩者還有一個行尾;號的區別,還有,就是它們書寫的位置相反,

更多資訊

Hi,XDJM們,更多資訊歡迎移步我的github或微信公眾號letsProgramming.

letsProgramming

相關推薦

我們程式設計 C++學習手冊v0.1

我們程式設計吧 之 cpp 學習手冊 * Version 0.1 * 轉義字元的使用 參考程式escape_char.cpp typedef與#define 的區別 typedef的用法 typedef常用來定義一個識別符號及關鍵字的別名,它

版本依賴管理 Maven 學習手冊

0x01 為什麼使用版本依賴工具Maven? 1.1 倉庫簡介 沒有Maven 時,專案用到的.jar 檔案通常需要拷貝到lib目錄下,專案多了,拷貝的檔案副本就多了,佔用磁碟空間,且難以管理。 Maven使用 一個稱之為倉庫的目錄,根據構件的座標統一儲存這些構件的唯一副本,在專案中通過依賴宣告

2017 程式設計實習C++部分作業題彙總

1、C01:看上去好坑的運算子過載 總時間限制: 1000ms 記憶體限制: 65536kB 描述 程式填空 #include <iostream> using namespace std; class MyInt {

程式設計哲學 C# 篇:007——如何創造萬物

上帝擁有建立萬物的能力,本文介紹創造萬物的道,讓你也擁有上帝般創造萬物的能力! 道 中國哲學家,道家學派創始人——老子,在《道德經》寫到: 道生一,一生二,二生三,三生萬物 那麼,是什麼 道 可以創造萬物? 古希臘的哲學家們曾做過這樣的推理: 如果將水、沙子、肉無限切分,最後得到的將是相同的不可分的顆粒

Ojective-C學習筆記(1

png 蘋果電腦 copyright 準備 開發 代碼 com 版本號 img 工欲善其事必先利其器,想要學習iOS開發,必須要有一些必要的設備才行。 準備工作: 一臺蘋果電腦,系統版本號10.13.4。安裝Xcode軟件,版本號9.3。以及一部蘋果手機。一切都準備好了,開

C#學習-圖解教程(1):格式化數字字符串

AC 格式化數字 學習內容 轉換 十進制數 標準 parse 程序 clas 學習內容:C#;學習書籍:圖解教程(中文第四版)。 目錄:第二章 C#編程概述 -----> 2.7 從程序中輸出文本 -----> 2.7.5格式化數字字符串 using Syst

C#學習筆記整理1--資料型別

什麼是資料型別(Data Type) A data type is a homogeneous collection of values, effectively presented, equiipped with a set of operations wh

實驗簡單的sql注入1

實驗吧之簡單的sql注入1 進來頁面: 查詢注入點!輸入1’報錯,存在注入 輸入1’ select union 1發現報錯 而且報錯只輸出一個1 懷疑是不是select和union被過濾掉了 輸入’ununionion selectselect 1–發現 說明–也被吃掉了,而且後

Java併發程式設計系列十:synchronized(1

在多執行緒併發訪問資源(這類資源稱為臨街資源)的時候,由於割裂來了原子操作,所以會導致資料不一致的情況。為了避免這種情況,需要使用同步機制,同步機制能夠保證多執行緒併發訪問資料的時候不會出現資料不一致的情況。 一種同步機制是使用synchronized關鍵字,

程式設計珠璣生成0至n-1之間的k個不同隨機序列的擴充套件問題 --2014人人網筆試題目

一般的思想是產生一個隨機數 arr[i] 後,和前面已經產生的arr[0]~arr[i-1]進行比較,如果有重複的就重新產生一個,該演算法的平均時間複雜度為:O(n^2) ,而最壞複雜度為無限!! 這裡我們按照程式設計珠璣上那個問題的擴充套件想法,利用空間換時間的演算法,生成隨機排列的數,此時時間複雜度

JavaScript高階程式設計第3版學習心得(1

語法 一、在html中加入JavaScript: 1.在html中嵌入JavaScript程式碼 <script type="text/javascript"> if(1<2){ alert('jjjj'); } </scri

NOI題庫答案(1.5 程式設計基礎迴圈控制)(1—20題)

01:求平均年齡 總時間限制: 1000ms        記憶體限制: 65536kB 描述 班上有學生若干名,給出每名學生的年齡(整數),求班上所有學生的平均年齡,保留到小數點後兩位。 輸入 第一行有一個整數n(1<= n <= 100),表

web安全機器學習入門——3.1 KNN/k近鄰算法

數據收集 完成 整合 ada set acc eat true orm 目錄 sklearn.neighbors.NearestNeighbors 參數/方法 基礎用法 用於監督學習 檢測異常操作(一) 檢測異常操作(二) 檢測rootkit 檢測websh

QTC++和QML混合程式設計學習筆記

QML中使用C++物件 建立一個測試用的C++物件 #ifndef PIECHART_H #define PIECHART_H #include <QtQuick/QQuickPaintedItem> #include <QColor> #include <

Python學習手冊 Python 禪、 Python 程式設計規範和函式引數

在上一篇文章中,我們介紹了 Python 的的正則表示式使用示例,現在我們介紹 Python 之禪、 Python 程式設計規範和函式引數。檢視上一篇文章請點選:https://www.cnblogs.com/dustman/p/10040430.html Python 之禪讓程式能夠正確執行只是成為一個優

C++語言程式設計基礎》函式學習筆記

引用的開銷比較小,因為只是傳遞指標,相當於變數多個名字 int i,j; int &ri=i; //ri引用 賦值為i的 j=10; ri=j; //ri賦值為j, 由於ri是引用,所以i也賦值為j 相當於i=j,引用是可以作為形參的 函式一般情況是單向傳遞的

Android破解學習路(十)—— 我們戀愛 三色繪戀 二次破解

前言 好久沒有寫破解教程了(我不會告訴你我太懶了),找到一款戀愛遊戲,像我這樣的宅男只能玩玩戀愛遊戲感覺一下戀愛的心動了。。 這款遊戲免費試玩,但是後續章節得花6元錢購買,我怎麼會有錢呢,而且身在吾愛的大家庭裡,不破解一波怎麼對得起我破解渣渣的身份呢! 喲,還是支付寶購買的,直接9000大法,但是破解的時候沒

網路安全學習C語言版DES加密解密演算法的程式設計與實現

其實明白了DES演算法的流程程式設計實現是不難的,當然可能會在S盒實現那碰到點問題。下面的DES演算法包括加密和解密兩個功能,主要有生成16個子金鑰和DES演算法的主程式組成。輸出的資訊有16輪子金鑰以及每輪的中間值以及最後的結果。具體的程式碼中都有註釋,就看程式碼吧。關於D

黑馬程式設計師C#程式設計基礎學習筆記:不斷要求使用者輸入一個數字,然後列印這個數字的二倍,當用戶輸入q的時候程式退出。

--------------------------------------------------- 2345王牌技術員聯盟、2345王牌技術員聯盟、期待與您交流!-----------------------------------------------------

小猿圈c#程式設計學習

說到c#大家應該都感覺不陌生,這篇文章小猿圈加加詳解一下怎麼在c#中使用複合賦值和迴圈語句,感興趣的朋友看這篇文章就對了。 使用