日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组

發布時間:2024/4/13 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<windows.h> 4 /* 舉列子說明什么是函數指針 */ 5 6 //以一個加減乘除 7 8 void Add(int a, int b){ 9 printf("%d + %d = %d \n" , a , b , a+b); 10 } 11 12 void Sub(int a , int b ) { 13 printf("%d - %d = %d \n", a, b, a - b); 14 } 15 16 void Mul(int a, int b) { 17 printf("%d * %d = %d \n", a, b, a * b); 18 } 19 void Div(int a, int b) { 20 printf("%d / %d = %d \n", a, b, a / b); 21 } 22 23 24 25 //對于數組指針。 26 void func() { 27 int * py[5] ; //定義一個數組指針 28 int aa[] = { 1,2,3,4,5,6 }; 29 py[0] = aa; 30 for (int i = 0; i < sizeof(aa) / sizeof(int) ; i++) 31 printf("%d " , py[0][i]); 32 puts(""); 33 } 34 //對于指針數組 35 void funcp() { 36 37 int(*pt)[5] ; 38 int aa[] = { 1,2,3,4,5 }; 39 pt= &aa; 40 for (int i = 0; i < 5; i++) { 41 printf("%d ",(*pt)[i]); 42 } 43 puts(""); 44 } 45 46 int main( void ) { 47 system("echo 下面現實的是指針數組 "); 48 funcp(); 49 system("echo 下面現實的是數組指針 "); 50 func(); 51 //函數指針的用處 52 system("echo 下面現實的是函數指針 "); 53 void (*p)(int, int)= Add; 54 p(1,2); 55 //函數數組指針 ,這里需要區分指針數組和數組指針 56 /* 57 ...[]優先級高于* 58 數組指針 : (*p)[] 像函數指針一樣,表示對于一個數組的指針,指針的類型是數組 59 int a[10]; 60 int (*p)[]=a; 61 指針數組 : *p[] ==*(p[]) 數組里的每一個元素為都為指針 62 63 */ 64 system("echo --下面現實的是函數指針數組---- "); 65 void(*ps[])(int, int) = { Add , Sub , Div ,Mul }; 66 for (int i = 0; i < 4; i++) { 67 ps[i](1,2); 68 } 69 getchar(); 70 return 0; 71 }

?

由上面那個列子:

我們就可以大概知道這些:

? ? ? ?指針 ?---》指向的是一個地址、

? ? ? ?數組指針: ?形如 ?int *p[4] ?-->說的是 ?p[0]~p[3]均為指針:

? ?如圖:

? ? ?

? ? ? 對于指針數組: ?形如: int (*p)[5] ;

? ? 這?*p是一個指針,但是不是一個 普通的一級指針,有點像二級指針,但是沒有二級指針那么大的權限,這樣比喻吧:

舉個日常的列子:

早上我們都要吃早飯(你丫,要是硬要說你不吃,那就不吃好了! ),但是至于要吃什么--隨便,但是規定你,只能吃五碗。指針數組就是這樣,你可以指向任何東西,但是都有限制(元素有限制)。

? ? ? 函數指針: 顧名思義是指向函數的指針, 形如: ?void (*p) (int a ) ; ?這個指針的指向范圍就更加的小了,就是只能指向函數。就好比,你早上要么不吃早飯,要吃,就得給老子吃胡蘿卜啥的一樣一樣的。?

? ? ?至于函數指針數組,函數數組指針,其實搞懂了,前面的幾種含義,后面的這些指針的意思,大概都可以有清晰的認識。

? const int *p ; ? ----指針常量,其所指向的對象,只能有讀取的權限,并沒有寫入的權限。

? int * const p ; -----常量指針,其地址不能改變。但是改地址的值可讀可寫。

? ?-----------------以上都是依據自己編程經驗的理解,以及平時使用的理解來寫的。如果有誤,還請指點。--------------------------

總結

以上是生活随笔為你收集整理的C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。