指针的各式定义
1,一個整形數:? int a;
2,一個指向整形數的指針: int *a;
3,一個指向指針的指針,它指向的指針指向一個整形數:? int **a;
4,一個有10個整形數的數組: int a[10];
5,一個有10個指針的數組,每個指針指向一個整形數: int *a[10];
6,一個指向有10個整形數的數組的指針:? int (*a)[10];
7,一個指向指針的指針,被指向的指針指向一個有10個整形數的數組: int (**a)[10];
8,一個指向數組的指針,該數組有10個整形指針:? int *(*a)[10];
9,一個指向函數的指針,該函數有一個整形參數并返回一個整形數: int (*a)(int);
10,一個有10個指針的數組,每個指針指向一個函數,該函數有一個整形參數并返回一個整形數:????????????????????? int (*a[10])(int);
11,一個函數的指針,指向的函數的類型是有兩個整形參數并且返回一個函數指針的函數,返回的函數指針指向有一個整形參數且返回整形數的函數:? int (*(*a)(int,int))(int);
?
需要區分的幾個有關指針的問題:
1.const指針與指向const的指針
??? 1)const 指針:指針是const,
比如:int * const x;
???? 表示指針不能修改,不能指向其他對象,但是指針所指向的地址的值可以修改;
??? 2) 指向const的指針:指針指向const對象
??????? 比如:const int *x;
????????? 或:int const *x;
???? 表示指針可以指向其他對象,但指針所指的當前對象的值不可以修改。
?
2.函數指針與函數返回指針
???? 1)函數指針:指向函數的指針
???????? 比如:int (*p)(int x, int y);
?????? 表示p為一個指針,指向函數的首地址;
???? 2)函數返回指針:函數的返回值為指針類型
??????? 比如:int *p(int x, int y);
?????? 表示該函數返回值為指針類型。
?
3.數組指針與指針數組
???? 1)數組指針:指向數組的指針
??????? 比如:int (*p)[10];
????? 表示一個指針,指向具有10個整形元素的一維數組;
???? 2)指針數組:數組元素為指針的數組
?????? 比如:int *p[10];
????? 表示一個一維數組,元素均為整形指針。
?
轉載于:https://www.cnblogs.com/liangxiaofeng/p/5684788.html
總結
- 上一篇: 有大神知道这是谁么?
- 下一篇: 常用rsync命令操作梳理