指针的分类
来源:互联网 发布:知乎100个经典回答 编辑:程序博客网 时间:2024/05/21 16:58
指针的分类
http://mba.shengwushibie.com/itbook/BookChapter.asp?id=39453
1. 按指向的对象划分
整型指针、浮点指针、字符指针、数组指针、指针数组、结构体指针、函数指针等。
int *p_int;
float *p_float;
char *p_char;
char (*p_array)[2]; // 数组指针
char *p_parray[2]; // 指针数组
char (*p_func)(int);
2. 按指针的多级性划分
单级间指、二级间指、三级间指等。
int *p_int1; //单级
int **p_int2; //两级
int ***p_int3; //三级
3. 按指针定以后是否可变划分
常量指针,可变指针。
int i_int; // 整型变量
int *p_int; // 指针变量
const int *p_int2 = &i_int; // 指针可变,所指内容不能变。
int const *p_int3 = &i_int; // 指针可变,所指内容不能变。
int *const p_int4 = &i_int; // 指针不可变,所指内容可变。
const int *const p_int5 = &i_int; // 指针不可变,所指内容不可变。
个人理解:关键字const优先匹配其前面的数据类型,如果前面没有,则优先匹配后面第一个数据类型。
例如:
int const *p; 优先匹配int,因此数据内容不可变,但指针*没被修饰,可变。
const int *p; 优先匹配int,数据内容不可变,指针可变。
int* const p; 优先匹配*,指针不可变,数据内容可变。
const int* cosnt p; 第一个const修饰int,第二个const修饰*,数据内容和指针都不可变。
另外:
int (*p_array)[2]; 因为有括号,*修饰p_array,int只好修饰这个数组,即p_array是一个指向数组的指针。即数组指针
int *p_parray[2]; 没有括号,*修饰int,说明是一个整形指针,然后修饰数组array,说明这个数组里的每个元素都是一个指针。即指针数组。
此外:
指针常量与常量指针,和 数组指针与指针数组一样绕口。
理解方式:指针在前面不可变,在后面可变
指针常量:即指针不可变,数据内容可变。
常量指针:指针可变,数据内容不可变。
- 指针以及指针的分类
- 指针的分类
- 指针的分类有哪些
- 指针分类
- 各种指针分类总结 + 指针间的赋值关系
- C++智能指针分类及使用
- listview的分类,仿京东分类
- 指针 指针的引用 指针的指针
- 数组指针, 指针的指针
- 变量 指针 指针的指针
- 指针和指针的指针
- 体会指针,指针的指针
- 指针与指针的指针
- 指针和指针的指针
- 指针的指针 数组指针 指针数组
- 指针的指针
- 指向指针的指针
- 指针的指针
- 英语练习138 A good citizen
- linux curses 管理多窗口
- 设计模式全集
- 使用IDC分析加密代码
- Unity3D脚本中文系列教程(十一)
- 指针的分类
- 我的技术博客,由此开始
- linux内核编译步骤
- 快捷修改linux的登录密码
- 程序员在上海(10)
- C#中如何遍历Dictionary并修改值
- 消息队列软件产品大比拼
- Android设计模式系列--SDK源码之观察者模式
- Unity3D脚本中文系列教程(十二)