在定义指针变量时,用 type + * 的方式
例如:
int *p;
char *ch;
...
说明一点,*和变量名没关系,也可以写成如下风格,单独的p和ch叫做指针变量
int* p;
char* ch;
...
一个指针只能指向与它类型相同的类型
如下:
int a = 0;
int *p = &a;
char ch = 'A';
char *q = &ch;
int **pp = &p;
float n = 3.14;
float *f = &n;
对下列概念的理解
1.指针数组
例:
int a = 10;
int *arr[10];
arr[0] = &a;
*arr[0] = 20;
printf("%d\n", a);//打印结果为20
arr是一个数组,数组中的元素是整型指针,可指向整型变量
2.数组指针
例:
char arr[10];
char (*p)[10] = &arr;
*p[5] = 'A';
printf("%c\n", *p[5]);
它是一个指针,可以指向一个有十个元素的数组,并可以通过这个指针改变数组里的任意值。
3.函数指针
int fun(int a)
{
return a*a;
}
int main()
{
int (*p)(int) = fun;
printf("%d\n", (*p)(10));//结果为100
return 0;
}
它是一个指针,可以指向函数,类型也要保持一致
4.函数指针数组
#include<stdio.h>
int fun(int a)
{
return a*a;
}
int main()
{
int(*p[10])(int);
p[0] = fun;
printf("%d\n", (*p[0])(5));//对零号元素解引用,将5作为参数传入
system("pause");
return 0;
}
这是一个数组,里面的每个元素是一个函数指针
5.指向函数指针数组的指针
#include<stdio.h>
int fun(int a)
{
return a*a;
}
int main()
{
int (*arr[10])(int);
arr[0] = fun;
int(*(*p)[10])(int) = &arr;
printf("%d\n", (*(*p[0]))(6));//对零号元素解引用,将6作为参数传入
system("pause");
return 0;
}
这是一个指针,它指向了一个数组元素为函数指针的数组