一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

匠人的百寶箱--C語言重要概念!

 心之所指 2006-01-18
[編程技巧]C語言重要概念!
程序匠人 發(fā)表于 2006-1-12 20:06:00       閱讀全文(559) | 回復(0) | 引用(0)

C語言重要概念![轉(zhuǎn)貼]
阿擺 發(fā)表于 2006-1-12 17:14:00 
?。谜Z言的重要概念

一、C語言的指針
1.指針說明
  指針是包含另一變量的地址變量。
  (1)int *p
  p是一個指針,指向一個整形數(shù)。
  (2)int *p()
  p是一個函數(shù),該函數(shù)返回一個指向整數(shù)的指針。
  (3)int (*p)()
  p是一個指針,該指針指向一個函數(shù),這個函數(shù)返回一個整數(shù)。
  (4)int *p[]
  p是一個數(shù)組,該數(shù)組的每一個元素是指向整數(shù)的指針。
  (5)int (*p)[]
  p是一個指針,該指針指向一個數(shù)組,這個數(shù)組的每一個元素是一個整數(shù)。
  (6)int *(*p)()
  p是一個指針,該指針指向一個函數(shù),這個函數(shù)返回一個指向整數(shù)的指針。
2.指針的初始化(賦地址)
  (1)通過符號&取變量(包括結(jié)構(gòu)變量、數(shù)組第一個元素)的地址賦給指針;
  (2)把數(shù)組名賦給指針;
  (3)把函數(shù)名賦給指向函數(shù)的指針;
  (4)動態(tài)分配內(nèi)存
  例:struct c{double r,i;};
  struct c *p;
  p=(struct c *)malloc(sizeof(struct c));
3.指針與數(shù)組、函數(shù)的關(guān)系
  (1)對于一維數(shù)組 int a[i] 或指針 int *a
  a+i 指向 a[i]
  (2)對于字符串 char s[i] 或指針 char *s
  s+i 指向第 i個字符 s[i]
  (3)對于二維數(shù)組int a[i][j]
  *a+j 指向 a[0][j]
  *(a+i) 指向 a[i][0]
  *(a+i)+j 指向 a[i][j]
  例:對于 a[2][3]={1,2,3,4,5,6,}; 有 *(*(a+1)+1)=5;
  (4)對于字符串數(shù)組char p[i][j] 或字符型指針數(shù)組char *p[i]
  *p+j 指向第 0個字符串的第 j個字符
  *(p+i) 指向第 i個字符串的第 0個字符
  *(p+i)+j 指向第 i個字符串的第 j個字符
  例:對于 *p[]={"ABC","DEF"}; 有 *(*(p+1)+1)=‘E‘;
  例:對于 char p[][3]={"ABC","DEF"}; 有 *(*(p+1)+1)=‘E‘;
  (5)對于指針數(shù)組int *a[i]
  a[i] 指向 變量i
  即 *a[i]=變量i 或 a[i]=&變量i
  (6)對于結(jié)構(gòu)struct XY
  {int x;int *y}*p;
  p是指向結(jié)構(gòu)XY的指針
  (*p).x 或 p->x 是表示 x 的內(nèi)容
  (*p).y 或 p->y 是表示指針 y 的值(地址)
  *(*p).y 或 *p->y 是表示 y 所指的內(nèi)容
  &(*p).x 或 &p->x 是表示 x 的地址
  (7)指向函數(shù)的指針
  對于 void func(char *str)
  {…}; //定義了一個函數(shù)
  void (*p)(char*);//定義了一個函數(shù)指針
  p=func; //讓指針指向函數(shù)
  則(*p)("…"); //用指針p可以調(diào)用函數(shù)func
  (8)指向多個不同函數(shù)的指針數(shù)組
  對于void function_1() {…};
  …
  void function_4() {…}; //定義了四個函數(shù)
  typedef void(*menu_fcn)();//定義了指向函數(shù)的指針
  menu_fcn command[4]; //定義了指針數(shù)組
  command[0]=function_1;
  …
  command[3]=function_4; //讓指針數(shù)組指向四個函數(shù)
  則command[0](); //用指針數(shù)組中的一個元素調(diào)用一個函數(shù)
4.指針的分類
  (1)近指針(near):
  近指針為16位指針,它只含有地址的偏移量部分。近指針用于不超過64K 字節(jié)的單個數(shù)據(jù)段或代碼段。在微、小和中編譯模式下產(chǎn)生的數(shù)據(jù)指針是近指針(缺省狀態(tài));在微、小和中編譯模式下產(chǎn)生的碼指針(指向函數(shù)的指針)是近指針(缺省狀態(tài))。
  (2)遠指針(far)
  遠指針為32位指針,指針的段地址和偏移量都在指針內(nèi)。可用于任意編譯模式。每次使用遠指針時都要重裝段寄存器。遠指針可尋址的目標不能超過64K ,因為遠指針增減運算時,段地址不參與運算。在緊湊、大和巨模式下編譯產(chǎn)生的數(shù)據(jù)指針是遠指針(缺省狀態(tài))。
  (3)巨指針(huge)
  巨指針為32位指針,指針的段地址和偏移量都在指針內(nèi)。可用于任意編譯模式。遠指針尋址的目標可以超過64K 。巨指針是規(guī)則化的指針。
5.指針的轉(zhuǎn)換
  (1)遠指針轉(zhuǎn)換成巨指針
  使用以下函數(shù)
  void normalize(void far * * p)
  {
  *p=(void far *)(((long)*p&0xffff000f)+(((long)*p&0x0000fff00<<12));
  }
6.指針的使用
  (1)將浮點數(shù)轉(zhuǎn)換成二進制數(shù)
  float ff=16.5;
  unsigned char *cc;
  (float*)cc=&ff;
  //此時cc的內(nèi)容為"00008441"
  //即cc第一個字節(jié)=0;第二個字節(jié)=0;第三個字節(jié)=0x84;第四個字節(jié)=0x41;
  (2)將二進制數(shù)轉(zhuǎn)換成浮點數(shù)
  float ff;
  unsigned char *cc;
  cc=(unsigned char*)malloc(4);
  cc=(unsigned char*)&ff;
  *(cc+0)=0;
  *(cc+1)=0;
  *(cc+2)=0x84;
  *(cc+3)=0x41;
  //此時ff=16.5
  free(cc);


二、C 語言的函數(shù)
1.用戶自定義函數(shù)格式
  類型 函數(shù)名(形式參數(shù)表)
  參數(shù)說明
  {
  ……
  }
2.函數(shù)的調(diào)用方式
  (1)傳值方式
  ①傳給被調(diào)用函數(shù)的是整型、長整型、浮點型或雙精度型變量。被調(diào)用的函數(shù)得定義相應的變量為形參。
 ?、趥鹘o被調(diào)用函數(shù)的是結(jié)構(gòu)變量。被調(diào)用函數(shù)得定義結(jié)構(gòu)變量為形參。
 ?、蹅鹘o被調(diào)用函數(shù)的是結(jié)構(gòu)變量的成員。被調(diào)用函數(shù)得定義與該成員同類的變量為形參。
  (2)傳址方式
 ?、賯鹘o被調(diào)用函數(shù)的是變量的地址。被調(diào)用函數(shù)得定義指針變量為形參。
 ?、趥鹘o被調(diào)用函數(shù)的是數(shù)組的地址即數(shù)組名。被調(diào)用的函數(shù)得定義數(shù)組或指針變量為形參。
 ?、蹅鹘o被調(diào)用函數(shù)的是函數(shù)的地址即函數(shù)名稱。被調(diào)用函數(shù)得定義指向函數(shù)的指針變量為形參。
 ?、軅鹘o被調(diào)用函數(shù)的是結(jié)構(gòu)的地址。被調(diào)用函數(shù)得定義結(jié)構(gòu)指針為形參。
3.函數(shù)調(diào)用(傳值方式)結(jié)果的返回
  (1)返回的是數(shù)值
  要求被調(diào)用的函數(shù)類型與接收返回值的變量類型相同。
  (2)返回的是指針
  要求被調(diào)用的函數(shù)是指針函數(shù),其指向的類型與接收的指針變量指向類型相同。
  (3)不返回任何值
  被調(diào)用的函數(shù)是void型。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本不卡片一区二区三区| 亚洲天堂久久精品成人| 在线观看日韩欧美综合黄片| 日本黄色高清视频久久| 国产免费无遮挡精品视频 | 美女被后入视频在线观看| 国产成人午夜在线视频| 国产成人精品视频一区二区三区 | 日本加勒比不卡二三四区| 日韩中文字幕欧美亚洲| 中文字幕区自拍偷拍区| 中文字幕在线区中文色| 这里只有九九热精品视频| 国产精品免费福利在线| 成人欧美一区二区三区视频| 深夜视频在线观看免费你懂 | 好吊色免费在线观看视频| 欧美整片精品日韩综合| 久热人妻中文字幕一区二区| 中文字幕久热精品视频在线| 国产一区二区三中文字幕 | 91精品欧美综合在ⅹ| 制服丝袜美腿美女一区二区| 亚洲一区二区三区在线免费| 黄色污污在线免费观看| 亚洲国产性感美女视频| 日韩欧美一区二区久久婷婷| 亚洲淫片一区二区三区| 日韩精品视频香蕉视频| 国产色第一区不卡高清| 亚洲精品蜜桃在线观看| 在线欧洲免费无线码二区免费| 黄色美女日本的美女日人| 91人妻久久精品一区二区三区| 加勒比东京热拍拍一区二区| 91精品国产综合久久福利| 日本加勒比在线播放一区| 日本女优一区二区三区免费| 男人操女人下面国产剧情| 麻豆蜜桃星空传媒在线观看| 国产精品欧美一区两区|