如何区分下列四种指针:
int *p[10]
int (*p)[10]
int *p(int)
int (*p)(int)
1. int *p[10]
int *p[10]
是指针数组。强调的是数组的概念。简单的讲,可以理解为定义了一个数组,数组内的元素其数据类型为int *
指针。
常见的使用方式如下:
int *p_arr[10];
int *p1 = nullptr;
p_arr[0] = p1;
2. int (*p)[10]
int (*p)[10]
为指针数组。强调的是指针的概念。指针p
指向一个长度等于10,数据类型为int
的数组。
常见的使用方式如下:
int (*arr_p)[10] = new int[5][10];
cout << " address of arr_p" " << arr_p << endl;
arr_p++;
cout << " address of arr_p" " << arr_p << endl;
3. int *p(int)
int *p(int)
是函数声明:返回类型为int *
,形参为int
的函数
4. int (*p)(int)
int (*p)(int)
是函数指针。函数指针是指向函数的指针。
常见的使用方式如下:
// 函数指针
int (*func_p)(int);
// 定义一个函数
int testFunc(int a){
cout << "a : " << a << endl;
}
int main(){
func_p = testFunc;
func_p(5);
return 0;
}