指针函数与指针数组
1. 函數指針 void (*f)()
2. 函數返回指針 void *f()
3. const 指針. const int * or int const *. 即指針指向的值不能被修改, const 在 * 左邊
4. 指向 const 的指針. int * const, 指針本身不能被修改
?
例題1:
一個指向整型數組的指針定義為
A. int(*ptr) [] B. int *ptr[] C. int *(ptr[]) D. int ptr[]
A 是指向整型數組的指針
B, C 等價, 是指向數組的指針, 數組的元素是 int*
?
例題2:
int main() {
????int a[] = {1, 2, 3, 4, 5};
????int *ptr = (int *)(&a + 1);
????printf("%d %d", *(a+1), *(ptr-1));
}
返回的結果是 2, 5
數組名本身就是指針, 再加上 & 就變成了雙指針, 這里的雙指針就是指二維數組, 加上 1, 就是數組整體加一行, ptr 指向第六個元素
?
例題3:
float (**def) [10]; def 是一個二級指針, 它指向一個一維數組的指針, 數組元素都是 float
double* (*gh) [10]; gh 是一個指針, 它指向一個一維數組, 數組的元素都是 double*
double (*f[10])(); f 是一個函數數組,
int (*(*f)(int, int))(int); f是一個函數指針, 參數為兩個 int 并返回一個函數指針, 該函數的指針接受一個 int 并返回一個 int
?
例題4:
int main() {
????char* a[] = {"hello", "the", "world"};
????char **pa = a;
????pa ++;
????cout << *pa << endl;????
????return 0;
}
?
輸出是 the
char* a[] 等價于 char* (a[]), pa 是一個二維數組
轉載于:https://www.cnblogs.com/zhouzhuo/p/3639880.html
總結
- 上一篇: Linux shell 变量 数学 运算
- 下一篇: 揭秘PPT设计中的逻辑真相