1.int p
整型变量;
2.int *p
p先与*组合,说明是指针;
再与int组合,说明指向的内容为int类型;
3.int p[3]
p先与[ ]组合,说明是数组;
再与int组合,说明数组内容是int类型;
4.int *p[3]
p先与[ ]组合,说明是数组;
再与*组合,说明数组内容是指针;
最后和int组合,说明指针指向的内容是int类型;
【[ ]优先级比 * 高】
5.int (*p)[3]
p先与*组合,说明是指针;
再与[ ]组合,说明指向的内容为数组类型;
最后和int组合,说明数组的内容是int类型;
6.int **p
p先与*组合,说明是指针;
再与*组合,说明指向的内容为指针类型;
最后和int组合,说明指针指向的内容是int类型;
7.int p(int)
p先与()组合,说明是函数;
再与里面int组合,说明函数有一个int类型参数;
最后与外面的int组合,说明函数返回值是int类型;
8.int (*p)(int)
p先与*组合,说明是指针;
再与( )组合,说明指向的内容为函数类型;
在和里面的int组合,说明函数有一个int类型参数;
最后和外面的int组合,说明函数返回值是int类型;
9.int *(*p(int))[3]
p先与()组合,说明是函数;
再与里面int组合,说明函数有一个int类型参数;
再与里面的*组合,说明函数返回值是指针类型;
再与[ ]组合,表示返回的指针指向数组类型;
再与外面的*组合,表示数组的内容是指针;
最后与外面的int组合,说明指针指向的是int类型;
Other:
1.遇到指针怎么分析
a.指针的类型:把指针名字去掉,剩下的就是;
b.指针指向的类型:把指针的名字+*一起去掉,剩下的就是;
c.指针的值 or 指针所指向的内存区或地址;
d.指针本身占用多少内存,sizeof(指针的类型);
【在32位平台中,指针本身占4Byte】
2.指针+1的含义
对该指针增加1个存储单位
存储单位指的是指针指向的数据类型所占的内存的字节数
3.日常codeing中会使用的指针函数
int (*data_sm[4])(txxx data)
int data1(txxx data)
{
// xxx;
printf(" xx");
}
data_sm[0] = data1;
data_sm[1] = data2;
4.快慢指针
使用两个在数组 or 链表中以不同速度移动的指针
在处理循环链表或数组时非常有用
5.双指针
waiting for update...