typedef和define有什么区别(typedef和define的区别)
大家好!今天讓小編來(lái)大家介紹下關(guān)于typedef和define有什么區(qū)別(typedef和define的區(qū)別)的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
您好,今天芳芳來(lái)為大家解答以上的問(wèn)題。typedef和define有什么區(qū)別,typedef和define的區(qū)別相信很多小伙伴還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
1、1) #define是預(yù)處理指令,在編譯預(yù)處理時(shí)進(jìn)行簡(jiǎn)單的替換,不作正確性檢查,不關(guān)含義是否正確照樣帶入,只有在編譯已被展開的源程序時(shí)才會(huì)發(fā)現(xiàn)可能的錯(cuò)誤并報(bào)錯(cuò)。
2、例如:#define PI 3.1415926程序中的:area=PI*r*r 會(huì)替換為3.1415926*r*r如果你把#define語(yǔ)句中的數(shù)字9 寫成字母g 預(yù)處理也照樣帶入。
3、2)typedef是在編譯時(shí)處理的。
4、它在自己的作用域內(nèi)給一個(gè)已經(jīng)存在的類型一個(gè)別名,但是You cannot use the typedef specifier inside a function definition。
5、3)typedef int * int_ptr;與#define int_ptr int * 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所說(shuō) ,#define在預(yù)處理 時(shí)進(jìn)行簡(jiǎn)單的替換,而typedef不是簡(jiǎn)單替換 ,而是采用如同定義變量的方法那樣來(lái)聲明一種類型。
6、也就是說(shuō);//refer to (xzgyb(老達(dá)摩))#define int_ptr int *int_ptr a, b; //相當(dāng)于int * a, b; 只是簡(jiǎn)單的宏替換typedef int* int_ptr;int_ptr a, b; //a, b 都為指向int的指針,typedef為int* 引入了一個(gè)新的助記符這也說(shuō)明了為什么下面觀點(diǎn)成立//QunKangLi(維護(hù)成本與程序員的創(chuàng)造力的平方成正比)typedef int * pint ;#define PINT int *那么:const pint p ;//p不可更改,但p指向的內(nèi)容可更改const PINT p ;//p可更改,但是p指向的內(nèi)容不可更改。
7、pint是一種指針類型 const pint p 就是把指針給鎖住了 p不可更改而const PINT p 是const int * p 鎖的是指針p所指的對(duì)象。
本文就為大家分享到這里,希望小伙伴們會(huì)喜歡。
以上就是小編對(duì)于typedef和define有什么區(qū)別(typedef和define的區(qū)別)問(wèn)題和相關(guān)問(wèn)題的解答了,typedef和define有什么區(qū)別(typedef和define的區(qū)別)的問(wèn)題希望對(duì)你有用!
總結(jié)
以上是生活随笔為你收集整理的typedef和define有什么区别(typedef和define的区别)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 英山漂流什么时候开放(英山漂流)
- 下一篇: 男士戒指戴法含义图解(男士戒指戴法)