奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

C語言

C語言的指針型函數

時間:2024-09-04 01:28:12 C語言 我要投稿
  • 相關推薦

C語言的指針型函數

  導語:所謂函數類型是指函數返回值的類型。 在C語言中允許一個函數的返回值是一個指針(即地址), 這種返回指針值的函數稱為指針型函數。讓我們一起了解一下這種函數吧!

  定義指針型函數的一般形式為:

  類型說明符 *函數名(形參表)

  {

  …… /*函數體*/

  }

  其中函數名之前加了“*”號表明這是一個指針型函數,即返回值是一個指針。類型說明符表示了返回的指針值所指向的數據類型。

  如:

  int *ap(int x,int y)

  {

  ...... /*函數體*/

  }

  表示ap是一個返回指針值的指針型函數, 它返回的指針指向一個整型變量。下例中定義了一個指針型函數 day_name,它的返回值指向一個字符串。該函數中定義了一個靜態指針數組name。name 數組初始化賦值為八個字符串,分別表示各個星期名及出錯提示。形參n表示與星期名所對應的整數。在主函數中, 把輸入的整數i作為實參, 在printf語句中調用day_name函數并把i值傳送給形參 n。day_name函數中的return語句包含一個條件表達式, n 值若大于7或小于1則把name[0] 指針返回主函數輸出出錯提示字符串“Illegal day”。否則返回主函數輸出對應的星期名。主函數中的第7行是個條件語句,其語義是,如輸入為負數(i<0)則中止程序運行退出程序。exit是一個庫函數,exit(1)表示發生錯誤后退出程序, exit(0)表示正常退出。

  應該特別注意的是函數指針變量和指針型函數這兩者在寫法和意義上的區別。如int(*p)()和int *p()是兩個完全不同的量。int(*p)()是一個變量說明,說明p 是一個指向函數入口的指針變量,該函數的返回值是整型量,(*p)的兩邊的括號不能少。int *p() 則不是變量說明而是函數說明,說明p是一個指針型函數,其返回值是一個指向整型量的指針,*p兩邊沒有括號。作為函數說明, 在括號內最好寫入形式參數,這樣便于與變量說明區別。 對于指針型函數定義,int *p()只是函數頭部分,一般還應該有函數體部分。

  main(){

  int i;

  char *day_name(int n);

  printf("input Day No:/n");

  scanf("%d",&i);

  if(i<0) exit(1);

  printf("Day No:%2d-->%s/n",i,day_name(i));

  }

  char *day_name(int n){

  static char *name[]={ "Illegal day",

  "Monday",

  "Tuesday",

  "Wednesday",

  "Thursday",

  "Friday",

  "Saturday",

  "Sunday"};

  return((n<1||n>7) ? name[0] : name[n]);

  }

  本程序是通過指針函數,輸入一個1~7之間的整數, 輸出對應的星期名。指針數組的說明與使用一個數組的元素值為指針則是指針數組。 指針數組是一組有序的指針的集合。 指針數組的所有元素都必須是具有相同存儲類型和指向相同數據類型的指針變量。

  指針數組說明的一般形式為: 類型說明符*數組名[數組長度]

  其中類型說明符為指針值所指向的變量的類型。例如: int *pa[3] 表示pa是一個指針數組,它有三個數組元素, 每個元素值都是一個指針,指向整型變量。通?捎靡粋指針數組來指向一個二維數組。 指針數組中的每個元素被賦予二維數組每一行的首地址, 因此也可理解為指向一個一維數組。圖6—6表示了這種關系。

  int a[3][3]={1,2,3,4,5,6,7,8,9};

  int *pa[3]={a[0],a[1],a[2]};

  int *p=a[0];

  main(){

  int i;

  for(i=0;i<3;i++)

  printf("%d,%d,%d/n",a[i][2-i],*a[i],*(*(a+i)+i));

  for(i=0;i<3;i++)

  printf("%d,%d,%d/n",*pa[i],p[i],*(p+i));

  }

  本例程序中,pa是一個指針數組,三個元素分別指向二維數組a的各行。然后用循環語句輸出指定的數組元素。其中*a[i]表示i行0列元素值;*(*(a+i)+i)表示i行i列的元素值;*pa[i]表示i行0列元素值;由于p與a[0]相同,故p[i]表示0行i列的值;*(p+i)表示0行i列的值。讀者可仔細領會元素值的各種不同的表示方法。 應該注意指針數組和二維數組指針變量的區別。 這兩者雖然都可用來表示二維數組,但是其表示方法和意義是不同的。

  二維數組指針變量是單個的變量,其一般形式中"(*指針變量名)"兩邊的括號不可少。而指針數組類型表示的是多個指針( 一組有序指針)在一般形式中"*指針數組名"兩邊不能有括號。例如: int (*p)[3];表示一個指向二維數組的指針變量。該二維數組的列數為3或分解為一維數組的長度為3。 int *p[3] 表示p是一個指針數組,有三個下標變量p[0],p[1],p[2]均為指針變量。

  指針數組也常用來表示一組字符串, 這時指針數組的每個元素被賦予一個字符串的首地址。 指向字符串的指針數組的初始化更為簡單。例如在例6.20中即采用指針數組來表示一組字符串。 其初始化賦值為:

  char *name[]={"Illagal day",

  "Monday",

  "Tuesday",

  "Wednesday",

  "Thursday",

  "Friday",

  "Saturday",

  "Sunday"};

  完成這個初始化賦值之后,name[0]即指向字符串"Illegal day",name[1]指?quot;Monday"......。

  指針數組也可以用作函數參數。在本例主函數中,定義了一個指針數組name,并對name 作了初始化賦值。其每個元素都指向一個字符串。然后又以name 作為實參調用指針型函數day name,在調用時把數組名 name 賦予形參變量name,輸入的整數i作為第二個實參賦予形參n。在day name函數中定義了兩個指針變量pp1和pp2,pp1被賦予name[0]的值(即*name),pp2被賦予name[n]的值即*(name+ n)。由條件表達式決定返回pp1或pp2指針給主函數中的指針變量ps。最后輸出i和ps的值。


【C語言的指針型函數】相關文章:

C語言指針的概念08-20

C語言指針函數和函數指針詳解09-29

C語言的指針類型詳解05-21

如何理解C語言指針05-19

C語言中的指針是什么08-08

如何使用C語言數組指針09-14

C語言復雜指針是什么08-15

C語言中指針的概念03-16

C語言指針知識點10-10

Swift與C語言指針結合使用實例09-21

主站蜘蛛池模板: 苍溪县| 长沙县| 潮安县| 会泽县| 金山区| 通化县| 堆龙德庆县| 安岳县| 雅江县| 嘉荫县| 蓬安县| 唐河县| 习水县| 邵武市| 阳西县| 顺义区| 乌拉特前旗| 宜城市| 绥江县| 朝阳区| 灵丘县| 延寿县| 蒙城县| 东山县| 石家庄市| 绥滨县| 汶上县| 广宁县| 南澳县| 宣汉县| 翁源县| 镇赉县| 通道| 蓝田县| 东平县| 隆化县| 岳普湖县| 嵩明县| 嘉兴市| 文安县| 台山市|