久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

#define與typedef的區(qū)別,?

 嵌入式大雜燴 2021-08-20

#define

#define是預(yù)處理指令,,在編譯時(shí)不進(jìn)行任何檢查,只進(jìn)行簡單的替換

宏定義的一般形式為:

#define 宏名 字符串

這里所說的字符串是一般意義上的字符序列,,不要和C語言中的字符串等同,,它不需要雙引號(hào)。

typedef

typedef是在C語言中用來為復(fù)雜的聲明定義簡單的別名,,它本身是一種存儲(chǔ)類的關(guān)鍵字,,與auto、extern,、mutable,、static、register等關(guān)鍵字不能出現(xiàn)在同一個(gè)表達(dá)式中,。

typedef取別名的一般形式為:

typedef  舊名字  新名字

#define與typedef的區(qū)別

(1)#define之后不帶分號(hào),,typedef之后帶分號(hào)。

(2)#define可以使用其他類型說明符對(duì)宏類型名進(jìn)行擴(kuò)展,,而 typedef 不能這樣做,。如:

#define INT1 int
unsigned INT1 n;  //沒問題
typedef int INT2;
unsigned INT2 n;  //有問題

INT1可以使用類型說明符unsigned進(jìn)行擴(kuò)展,而INT2不能使用unsigned進(jìn)行擴(kuò)展,。

3)在連續(xù)定義幾個(gè)變量的時(shí)候,,typedef 能夠保證定義的所有變量均為同一類型,而 #define 則無法保證。如:

#define PINT1 int*;
P_INT1 p1,p2;  //即int *p1,p2;
typedet int* PINT2;
P_INT2 p1,p2;  //p1,、p2 類型相同

PINT1定義的p1與p2類型不同,,即p1為指向整形的指針變量,p2為整形變量,;PINT2定義的p1與p2類型相同,,即都是指向 int 類型的指針。

下面看一個(gè)關(guān)于typedef的重要的問題??!請(qǐng)看代碼:

#include <stdio.h>

typedef char *pStr;

int main(void)
{
 char string[4]="abc";  //第一行代碼
 const char *p1=string;  //第二行代碼
 const pStr p2 = string; //第三行代碼
 p1++;          //第四行代碼
 p2++;            //第五行代碼
 
 return 0;
}

這段代碼編譯會(huì)報(bào)一個(gè)錯(cuò)誤(error: increment of read-only variable 'p2'),你知道問題出在哪嗎,?

答案與解析:

是第五行代碼p2++出錯(cuò)了,。這個(gè)問題提醒我們:typedef和#define不同,它不是簡單的文本替換,。上述代碼中const pStr p2并不等于const char * p2,。const pStr p2和pStr const p2本質(zhì)上沒有區(qū)別,都是對(duì)變量進(jìn)行只讀限制,,只不過此處變量p2的數(shù)據(jù)類型是我們自己定義的而不是系統(tǒng)固有類型而已,。因此,const pStr p2的含義是:限定數(shù)據(jù)類型為char *的變量p2為只讀,,即為char* const p2,,表明p2是一個(gè)指向char類型的常指針,所以p2是不可修改的,,因此p2++錯(cuò)誤,。

順便提一下關(guān)于const聲明的一些例子及其含義:

const int a;     //
int const b;     //②
const int *c;    // 
int * const d;   //④  
int const * e const;  // 

a是常數(shù),不可改變,; 

②b是常數(shù),,不可改變

c是一個(gè)指向整型常數(shù)的指針,指針可以變,,指針指向的內(nèi)容不可以變,;

d是一個(gè)指向整型變量的常指針,指針不可以變,,指針指向的內(nèi)容可以變,;

e是一個(gè)指向整型常數(shù)的常指針,,指針與指針指向的內(nèi)容都不可變,。

歷史文章精選:

01 二維數(shù)組作為函數(shù)參數(shù)

02 小學(xué)生都在使用手機(jī)學(xué)習(xí)編程了,你還在吃雞打王者,?

03 別用Visua C++6.0來開發(fā)C程序了,,用……

04 使用Notepad++來開發(fā)C程序

05 關(guān)于main()

06 一份通俗易懂的C語言內(nèi)存總結(jié)

07 數(shù)組問題:a與&a有什么不同

08 C語言函數(shù)參數(shù)壓棧的順序是?

09 getchar()、getche(),、getch()的區(qū)別,?

10 【校招編程01】級(jí)數(shù)求和

11 【校招編程02】優(yōu)雅的點(diǎn)

12 【校招編程03】整數(shù)翻轉(zhuǎn)

13 【校招編程04】懂二進(jìn)制

每日一句
生命從來不負(fù)責(zé)任喧嘩,再無聊的時(shí)光,,也都是限量版,。

我是肥胖的正念君

覺得正念君很胖的話

就來給我點(diǎn)個(gè)贊吧

↓     ↓     ↓     ↓     ↓     ↓



    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多