C指针的一些注意点
2016-03-11 13:17
232 查看
指针离储存的就是内存的一块地址。指针的内容分为指针的类型,指针所指向的类型,指针的值,指针所指向的内存区。
1. 指针的类型
指的是指针本身所具有的类型,去掉字符就是了。
2. 指针所指向的类型
指的是,去掉 *+指针名 后剩下的数据类型。就是指针指向内容的数据类型。
3. 指针的值
这个就是所谓储存的地址了,一个指针里面存着4个字节(32)位数的数值。
4. 指针所指向的内存区
就是这个内存指向的地方。
运算符*和&。
1. 指针的类型
指的是指针本身所具有的类型,去掉字符就是了。
int *ptr; //指针的类型是int * char *ptr; //指针的类型是char * int **ptr; //指针的类型是 int ** int (*ptr)[3]; //指针的类型是 int(*)[3] int *(*ptr)[4]; //指针的类型是 int *(*)[4]
2. 指针所指向的类型
指的是,去掉 *+指针名 后剩下的数据类型。就是指针指向内容的数据类型。
int *ptr; //指针所指向的类型是int char *ptr; //指针所指向的的类型是char int **ptr; //指针所指向的的类型是 int * 这是指向内容里还是一块指针,也就是2维数组 int (*ptr)[3]; //指针所指向的的类型是 int()[3] int *(*ptr)[4]; //指针所指向的的类型是 int *()[4]
3. 指针的值
这个就是所谓储存的地址了,一个指针里面存着4个字节(32)位数的数值。
4. 指针所指向的内存区
就是这个内存指向的地方。
运算符*和&。
int a = 12; int b; int *p; int **ptr; p = &a;//&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址是a的地址。 *p = 24;//*p的结果,在这里它的类型是int,它所占用的地址是p所指向的地址,显然,*p就是变量a。 ptr = &p;//&p的结果是个指针,该指针的类型是p的类型加个*,在这里是int**。该指针所指向的类型是p的类型,这里是int*。该指针所指向的地址就是指针p自己的地址。 *ptr = &b;//*ptr是个指针,&b的结果也是个指针,且这两个指针的类型和所指向的类型是一样的,所以?amp;b来给*ptr赋值就是毫无问题的了。 **ptr = 34;//*ptr的结果是ptr所指向的东西,在这里是一个指针,对这个指针再做一次*运算,结果就是一个int类型的变量。
相关文章推荐
- 解决在H170/B150主板不接显示器无法正常开机的问题
- 《关于C++中下标运算符的应用》
- 面试题笔记
- Java 内存区域详解
- 软件架构设计
- Python计算机视觉编程练习12:os模块学习
- 指令选择器调查(2)
- Redis源代码分析-内存数据结构intset
- memmove 和 memcpy的区别
- 错误: 找不到或无法加载主类 Files\apache-activemq-5.10.0\bin\..\conf\login.config
- practical system design with mef & mef[ trans from arup.codeplex.com/]
- 3月9日课程作业
- 设置表情键盘视图
- online_judge_1521
- Java命令行
- 面试之谈
- Android常用限定符
- 异常处理
- 投影不到电视上
- 获取Asset下文本内容和读取图片