生活随笔
收集整理的這篇文章主要介紹了
C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<windows.h>
4 /* 舉列子說明什么是函數(shù)指針 */
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 //對于數(shù)組指針。
26 void func() {
27 int * py[
5] ;
//定義一個數(shù)組指針
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 //對于指針數(shù)組
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 下面現(xiàn)實的是指針數(shù)組 ");
48 funcp();
49 system(
"echo 下面現(xiàn)實的是數(shù)組指針 ");
50 func();
51 //函數(shù)指針的用處
52 system(
"echo 下面現(xiàn)實的是函數(shù)指針 ");
53 void (*p)(
int,
int)=
Add;
54 p(
1,
2);
55 //函數(shù)數(shù)組指針 ,這里需要區(qū)分指針數(shù)組和數(shù)組指針
56 /*
57 ...[]優(yōu)先級高于*
58 數(shù)組指針 : (*p)[] 像函數(shù)指針一樣,表示對于一個數(shù)組的指針,指針的類型是數(shù)組
59 int a[10];
60 int (*p)[]=a;
61 指針數(shù)組 : *p[] ==*(p[]) 數(shù)組里的每一個元素為都為指針
62
63 */
64 system(
"echo --下面現(xiàn)實的是函數(shù)指針數(shù)組---- ");
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 }
?
由上面那個列子:
我們就可以大概知道這些:
? ? ? ?指針 ?---》指向的是一個地址、
? ? ? ?數(shù)組指針: ?形如 ?int *p[4] ?-->說的是 ?p[0]~p[3]均為指針:
? ?如圖:
? ? ?
? ? ? 對于指針數(shù)組: ?形如: int (*p)[5] ;
? ? 這?*p是一個指針,但是不是一個 普通的一級指針,有點像二級指針,但是沒有二級指針那么大的權限,這樣比喻吧:
舉個日常的列子:
早上我們都要吃早飯(你丫,要是硬要說你不吃,那就不吃好了! ),但是至于要吃什么--隨便,但是規(guī)定你,只能吃五碗。指針數(shù)組就是這樣,你可以指向任何東西,但是都有限制(元素有限制)。
? ? ? 函數(shù)指針: 顧名思義是指向函數(shù)的指針, 形如: ?void (*p) (int a ) ; ?這個指針的指向范圍就更加的小了,就是只能指向函數(shù)。就好比,你早上要么不吃早飯,要吃,就得給老子吃胡蘿卜啥的一樣一樣的。?
? ? ?至于函數(shù)指針數(shù)組,函數(shù)數(shù)組指針,其實搞懂了,前面的幾種含義,后面的這些指針的意思,大概都可以有清晰的認識。
? const int *p ; ? ----指針常量,其所指向的對象,只能有讀取的權限,并沒有寫入的權限。
? int * const p ; -----常量指針,其地址不能改變。但是改地址的值可讀可寫。
? ?-----------------以上都是依據(jù)自己編程經(jīng)驗的理解,以及平時使用的理解來寫的。如果有誤,還請指點。--------------------------
總結
以上是生活随笔為你收集整理的C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。