C语言中的#define与typedef有和区别;static与extern定义有和区别? 在C语言中下面的英语是什么意思?auto extern si...

\u5355\u7247\u673aC\u8bed\u8a00\u4e2dtypedef\u548cdefine\u7684\u533a\u522b\u662f\u4ec0\u4e48\uff1f

1) #define\u662f\u9884\u5904\u7406\u6307\u4ee4\uff0c\u5728\u7f16\u8bd1\u9884\u5904\u7406\u65f6\u8fdb\u884c\u7b80\u5355\u7684\u66ff\u6362\uff0c\u4e0d\u4f5c\u6b63\u786e\u6027\u68c0\u67e5\uff0c\u4e0d\u5173\u542b\u4e49\u662f\u5426\u6b63\u786e\u7167\u6837\u5e26\u5165\uff0c\u53ea\u6709\u5728\u7f16\u8bd1\u5df2\u88ab\u5c55\u5f00\u7684\u6e90\u7a0b\u5e8f\u65f6\u624d\u4f1a\u53d1\u73b0\u53ef\u80fd\u7684\u9519\u8bef\u5e76\u62a5\u9519\u3002\u4f8b\u5982\uff1a
#define PI 3.1415926
\u7a0b\u5e8f\u4e2d\u7684\uff1aarea=PI*r*r \u4f1a\u66ff\u6362\u4e3a3.1415926*r*r
\u5982\u679c\u4f60\u628a#define\u8bed\u53e5\u4e2d\u7684\u6570\u5b579 \u5199\u6210\u5b57\u6bcdg \u9884\u5904\u7406\u4e5f\u7167\u6837\u5e26\u5165\u3002

2\uff09typedef\u662f\u5728\u7f16\u8bd1\u65f6\u5904\u7406\u7684\u3002\u5b83\u5728\u81ea\u5df1\u7684\u4f5c\u7528\u57df\u5185\u7ed9\u4e00\u4e2a\u5df2\u7ecf\u5b58\u5728\u7684\u7c7b\u578b\u4e00\u4e2a\u522b\u540d\uff0c\u4f46\u662fYou cannot use the typedef specifier inside a function definition\u3002

3\uff09typedef int * int_ptr;
\u4e0e
#define int_ptr int *
\u4f5c\u7528\u90fd\u662f\u7528int_ptr\u4ee3\u8868 int * ,\u4f46\u662f\u4e8c\u8005\u4e0d\u540c\uff0c\u6b63\u5982\u524d\u9762\u6240\u8bf4 \uff0c#define\u5728\u9884\u5904\u7406 \u65f6\u8fdb\u884c\u7b80\u5355\u7684\u66ff\u6362\uff0c\u800ctypedef\u4e0d\u662f\u7b80\u5355\u66ff\u6362 \uff0c\u800c\u662f\u91c7\u7528\u5982\u540c\u5b9a\u4e49\u53d8\u91cf\u7684\u65b9\u6cd5\u90a3\u6837\u6765\u58f0\u660e\u4e00\u79cd\u7c7b\u578b\u3002\u4e5f\u5c31\u662f\u8bf4;

//refer to (xzgyb(\u8001\u8fbe\u6469))
#define int_ptr int *
int_ptr a, b; //\u76f8\u5f53\u4e8eint * a, b; \u53ea\u662f\u7b80\u5355\u7684\u5b8f\u66ff\u6362

typedef int* int_ptr;
int_ptr a, b; //a, b \u90fd\u4e3a\u6307\u5411int\u7684\u6307\u9488,typedef\u4e3aint* \u5f15\u5165\u4e86\u4e00\u4e2a\u65b0\u7684\u52a9\u8bb0\u7b26

\u8fd9\u4e5f\u8bf4\u660e\u4e86\u4e3a\u4ec0\u4e48\u4e0b\u9762\u89c2\u70b9\u6210\u7acb
//QunKangLi(\u7ef4\u62a4\u6210\u672c\u4e0e\u7a0b\u5e8f\u5458\u7684\u521b\u9020\u529b\u7684\u5e73\u65b9\u6210\u6b63\u6bd4)
typedef int * pint ;
#define PINT int *

\u90a3\u4e48\uff1a
const pint p ;//p\u4e0d\u53ef\u66f4\u6539\uff0c\u4f46p\u6307\u5411\u7684\u5185\u5bb9\u53ef\u66f4\u6539
const PINT p ;//p\u53ef\u66f4\u6539\uff0c\u4f46\u662fp\u6307\u5411\u7684\u5185\u5bb9\u4e0d\u53ef\u66f4\u6539\u3002

pint\u662f\u4e00\u79cd\u6307\u9488\u7c7b\u578b const pint p \u5c31\u662f\u628a\u6307\u9488\u7ed9\u9501\u4f4f\u4e86 p\u4e0d\u53ef\u66f4\u6539
\u800cconst PINT p \u662fconst int * p \u9501\u7684\u662f\u6307\u9488p\u6240\u6307\u7684\u5bf9\u8c61\u3002

3\uff09\u4e5f\u8bb8\u60a8\u5df2\u7ecf\u6ce8\u610f\u5230#define \u4e0d\u662f\u8bed\u53e5 \u4e0d\u8981\u5728\u884c\u672b\u52a0\u5206\u53f7\uff0c\u5426\u5219 \u4f1a\u8fde\u5206\u53f7\u4e00\u5757\u7f6e\u6362\u3002

\u610f\u601d\u662f\uff1a\u7c7b\u578b\u5b9a\u4e49\uff0c\u53d8\u91cf\u7c7b\u578b\u662fauto extern signed\u578b\u3002
auto \u53d8\u91cf\u7684\u5b58\u50a8\u7c7b\u522b\uff1a\u81ea\u52a8\u5b58\u50a8\u671f\u3002
extern \u53d8\u91cf\u7684\u4f5c\u7528\u8303\u56f4\uff1a\u5916\u90e8\u53d8\u91cf\u3002
signed \u53d8\u91cf\u5177\u4f53\u7c7b\u578b\uff1a\u6709\u7b26\u53f7\u6570\u3002
\u53cb\u60c5\u8d60\u9001\uff1aauto\u4fee\u9970\u7b26\u5df2\u7ecf\u8fc7\u65f6\u4e86\u3002\u57fa\u672c\u4e0a\u4e0d\u7528\u4e86\u2026\u2026

1) 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。

注意:两者还有一个行尾;号的区别哦!

2)static和extern的区别

extern int a;
说明 a 是在另外一个文件中定义的变量
这是声明,不是定义。
static int a;
定义静态变量 a.

两者的作用域不一样

  • C璇█涓殑鈥%鈥濅唬琛ㄤ粈涔堟剰鎬?
    绛旓細C璇█涓锛岀畻鏈繍绠楃鈥%鈥濅唬琛ㄦā锛堝彇浣欙級杩愮畻锛屸++鈥濅唬琛ㄥ彉閲忚嚜澧炶繍绠楋紝鈥--鈥濅唬琛ㄥ彉閲忚嚜鍑忚繍绠椼1銆佹ā杩愮畻鈥%鈥濃滄ā鈥濇槸鈥淢od鈥濈殑闊宠瘧锛屾ā杩愮畻澶氬簲鐢ㄤ簬绋嬪簭缂栧啓涓 Mod鐨勫惈涔変负姹備綑銆傛ā杩愮畻鍦ㄦ暟璁哄拰绋嬪簭璁捐涓兘鏈夌潃骞挎硾鐨勫簲鐢紝浠庡鍋舵暟鐨勫垽鍒埌绱犳暟鐨勫垽鍒紝浠庢ā骞傝繍绠楀埌鏈澶у叕绾︽暟鐨勬眰娉曪紝...
  • c璇█涓殑锝炴槸浠涔堟剰鎬?
    绛旓細锝炲湪c璇█涓鏄細棰氬寲绗﹀彿锛屽彇鍙嶇殑鎰忔濄備綅杩愮畻涓殑鎸変綅鍙栧弽锛屽湪C璇█涓锛岋綖鏄竴涓綅杩愮畻绗︼紝鐢ㄤ簬瀵规搷浣滄暟鐨勬瘡涓浣嶈繘琛屽彇鍙嶆搷浣滐紝鍗冲鏋滄搷浣滄暟鐨勬煇涓浣嶄负1锛岄偅涔堝彇鍙嶅悗杩欎竴浣嶄负0锛涘弽涔嬶紝濡傛灉鎿嶄綔鏁扮殑鏌愪竴浣嶄负0锛岄偅涔堝彇鍙嶅悗杩欎竴浣嶄负1銆傞昏緫闈炶繍绠楃锛屽湪C璇█涓紝锝炶繕鍙互浣滀负閫昏緫闈炶繍绠楃锛...
  • c璇█涓殑% d鍜孿 t鏄粈涔堟剰鎬?
    绛旓細C璇█涓鈥%d鈥濇槸鏍煎紡瀛楃锛屾剰鎬濇槸鏁版嵁浠ュ崄杩涘埗鏁存暟褰㈠紡杈撳嚭锛涒淺t鈥濇槸杞箟瀛楃锛屾剰鎬濇槸姘村钩鍒惰〃锛堣烦鍒颁笅涓涓猅ab浣嶇疆锛夈傚湪C璇█涓繕鏈夊叾瀹冩牸寮忓瓧绗︼紝o%锛屾剰鎬濇槸浠ュ叓杩涘埗鏁存暟褰㈠紡杈撳嚭锛泋%鎰忔濇槸浠ュ崄鍏繘鍒舵暣鏁板舰寮忚緭鍑猴紱c%鎰忔濇槸浠ュ瓧绗﹀舰寮忚緭鍑猴紱s%鎰忔濇槸浠ュ瓧绗︿覆褰㈠紡杈撳嚭銆傜瓑绛 鍦–璇█涓繕鏈夊叾瀹冭浆涔...
  • c璇█涓殑鈥!鈥
    绛旓細c璇█涓殑鈥!鈥濇槸閫昏緫杩愮畻涓殑闈炶繍绠椼傗!鈥濇槸C璇█涓殑闈炶繍绠楃锛屽湪鍙橀噺鍓嶉潰浣跨敤瀹冿紝浼氭瀯寤洪潪杩愮畻琛ㄨ揪寮忥紝琛ㄨ揪寮忕殑杩斿洖缁撴灉鏄釜甯冨皵鍊硷紙涔熷氨鏄彧鏈塼rue鎴杅alse锛夈傚鍙橀噺浣跨敤鏃讹紝濡傛灉鍙橀噺涓嶆槸甯冨皵鏁版嵁绫诲瀷锛屽皢浼氬己鍒惰浆鍖栦负甯冨皵绫诲瀷鍐嶄娇鐢紝濡傛暣褰㈠彉閲123灏嗚杞寲涓簍rue锛屾暣褰㈠彉閲0灏嗚杞寲涓篺alse銆
  • |鍦C璇█涓琛ㄧず浠涔堟剰鎬?
    绛旓細鈥渱鈥濆湪C璇█涓琛ㄧず鎸変綅鎴栵紝鏄弻鐩繍绠楃銆傚叾鍔熻兘鏄弬涓庤繍绠楃殑涓ゆ暟鍚勫搴旂殑浜岃繘浣嶏紙涔熷氨鏄渶鍚庝竴浣嶏級鐩告垨銆傚彧瑕佸搴旂殑浜屼釜浜岃繘浣嶆湁涓涓负1鏃讹紝缁撴灉浣嶅氨涓1銆傚弬涓庤繍绠楃殑涓や釜鏁板潎浠ヨˉ鐮佸嚭鐜般備緥濡傦細13|17鍙啓绠楀紡濡備笅锛
  • C璇█涓char鏄粈涔堟剰鎬?
    绛旓細char鏄疌璇█鏁村瀷鏁版嵁涓瘮杈冨彜鎬殑涓涓紝鍏跺畠鐨勫int/long/short绛変笉鎸囧畾signed/unsigned鏃堕兘榛樿鏄痵igned锛屼絾char鍦ㄦ爣鍑嗕腑涓嶆寚瀹氫负signed/unsigned锛岀紪璇戝櫒鍙互瀹炵幇涓哄甫绗﹀彿鐨勶紝涔熷彲浠ュ疄鐜颁负涓嶅甫绗﹀彿鐨勩傚叧浜巆har杩樻湁涓涓壒娈婄殑璇█灏辨槸char *锛屽畠鍦C璇█涓鏈変笓闂ㄧ殑璇箟锛屾棦涓嶅悓浜巗igned char *锛屼篃涓嶅悓...
  • c璇█涓殑%2d鏄粈涔堟剰鎬?
    绛旓細C璇█涓殑% 2d鏄痯rintf锛堬級鍑芥暟鐨勮緭鍑烘牸寮忎腑鐨%a.bf锛岃〃绀哄皢鏁板瓧鎸夊搴︿负2锛岄噰鐢ㄥ彸瀵归綈鏂瑰紡杈撳嚭锛岃嫢鏁版嵁浣嶆暟涓嶅埌2浣嶏紝鍒欏乏杈硅ˉ绌烘牸銆傚锛1銆佲%8d 鈥濊姹傝緭鍑哄搴︿负8锛岃宎鍊间负15鍙湁涓や綅鏁呰ˉ涓変釜绌烘牸銆2銆佲%6.3lf鈥濇寚瀹氳緭鍑哄搴︿负6锛岀簿搴︿负3锛岀敱浜庡疄闄呴暱搴﹁秴杩6鏁呭簲璇ユ寜瀹為檯浣嶆暟杈撳嚭锛屽皬鏁...
  • c璇█涓%鏄粈涔堟剰鎬?
    绛旓細鍦C璇█涓锛%鏄竴涓壒娈婄鍙凤紝閫氬父鐢ㄤ簬鏍煎紡鍖栬緭鍑猴紝渚嬪浣跨敤printf鍑芥暟杈撳嚭瀛楃涓叉椂銆%鍚庨潰閫氬父璺熶竴涓牸寮忔帶鍒剁锛岀敤浜庢寚瀹氳緭鍑虹殑鏍煎紡銆備緥濡傦紝%d琛ㄧず杈撳嚭涓涓暣鏁帮紝%f琛ㄧず杈撳嚭涓涓诞鐐规暟锛%s琛ㄧず杈撳嚭涓涓瓧绗︿覆绛夈備互涓嬫槸涓涓畝鍗曠殑C璇█绋嬪簭锛岀敤浜庤緭鍑轰竴涓暣鏁板拰涓涓瓧绗︿覆锛氬湪杩欎釜绋嬪簭涓紝鎴戜滑棣栧厛瀹氫箟...
  • c璇█涓殑%2d鏄〃绀轰粈涔?
    绛旓細C璇█涓殑% 2d鏄痯rintf锛堬級鍑芥暟鐨勮緭鍑烘牸寮忎腑鐨%a.bf銆傝〃绀哄皢鏁板瓧鎸夊搴︿负2锛岄噰鐢ㄥ彸瀵归綈鏂瑰紡杈撳嚭锛岃嫢鏁版嵁浣嶆暟涓嶅埌2浣嶏紝鍒欏乏杈硅ˉ绌烘牸銆傚锛1銆佲%8d 鈥濊姹傝緭鍑哄搴︿负8锛岃宎鍊间负15鍙湁涓や綅鏁呰ˉ涓変釜绌烘牸銆2銆佲%6.3lf鈥濇寚瀹氳緭鍑哄搴︿负6锛岀簿搴︿负3锛岀敱浜庡疄闄呴暱搴﹁秴杩6鏁呭簲璇ユ寜瀹為檯浣嶆暟杈撳嚭锛屽皬鏁...
  • c璇█涓殑%%鍜%10鏄粈涔堟剰鎬?
    绛旓細浜岃呬笉鍚岋紝5%10鐨勭粨鏋滀负5锛 10%5鐨勭粨鏋滀负0銆1銆%鍦C璇█涓涓烘ā闄よ繍绠楋紝鍙堢О涓哄彇浣欒繍绠椼傚叾褰㈠紡涓:a%b 缁撴灉涓篴闄や互b寰楀埌鐨勪綑鏁般2銆%杩愮畻浠呯敤浜庢暣鍨嬭繍绠椼傛诞鐐规暟涓嶅彲浠ュ弬涓庤繍绠椼 鍥犱负浠庢暟瀛﹁搴︽潵璇达紝娴偣鏁伴櫎娉曚笉瀛樺湪浣欐暟銆3銆%杩愮畻锛屾牴鎹暟瀛﹀師鐞嗭紝濡傛灉a b鍧囦负姝f暣鏁颁笖a...
  • 扩展阅读:define在c语言中用法 ... #define格式 ... c语言符号大全表解释 ... c语言define的用法示例 ... #define用法总结 ... define翻译 ... c语言宏define用法 ... define在c++语言中的用法 ... define在c语言中的干嘛呢 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网