欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
匠人的百寶箱--C語(yǔ)言重要概念!
[編程技巧]C語(yǔ)言重要概念!

程序匠人 發(fā)表于 2006-1-12 20:06:00       閱讀全文(559) | 回復(0) | 引用(0)

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

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


二、C 語(yǔ)言的函數
1.用戶(hù)自定義函數格式
  類(lèi)型 函數名(形式參數表)
  參數說(shuō)明
  {
  ……
  }
2.函數的調用方式
  (1)傳值方式
 ?、賯鹘o被調用函數的是整型、長(cháng)整型、浮點(diǎn)型或雙精度型變量。被調用的函數得定義相應的變量為形參。
 ?、趥鹘o被調用函數的是結構變量。被調用函數得定義結構變量為形參。
 ?、蹅鹘o被調用函數的是結構變量的成員。被調用函數得定義與該成員同類(lèi)的變量為形參。
 ?。?)傳址方式
 ?、賯鹘o被調用函數的是變量的地址。被調用函數得定義指針變量為形參。
 ?、趥鹘o被調用函數的是數組的地址即數組名。被調用的函數得定義數組或指針變量為形參。
 ?、蹅鹘o被調用函數的是函數的地址即函數名稱(chēng)。被調用函數得定義指向函數的指針變量為形參。
 ?、軅鹘o被調用函數的是結構的地址。被調用函數得定義結構指針為形參。
3.函數調用(傳值方式)結果的返回
  (1)返回的是數值
  要求被調用的函數類(lèi)型與接收返回值的變量類(lèi)型相同。
  (2)返回的是指針
  要求被調用的函數是指針函數,其指向的類(lèi)型與接收的指針變量指向類(lèi)型相同。
  (3)不返回任何值
  被調用的函數是void型。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
C語(yǔ)言面試題
C 語(yǔ)言之四 編譯器(轉)
編程中國 - 結構體數組的定義和引用
C語(yǔ)言結構體指針變量作函數參數
C語(yǔ)言經(jīng)典筆試題(一)
深入理解C語(yǔ)言
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久