iPhone第三天之C基础
来源:互联网 发布:淘宝卖家违规分超过48 编辑:程序博客网 时间:2024/05/20 23:05
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。
指针的类型
从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:
(1)int*ptr;//指针的类型是int*
(2)char*ptr;//指针的类型是char*
(3)int**ptr;//指针的类型是int**
(4)int(*ptr)[3];//指针的类型是int(*)[3]
(5)int*(*ptr)[4];//指针的类型是int*(*)[4]
指针所指向的类型
当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。
从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如:
(1)int*ptr;//指针所指向的类型是int
(2)char*ptr;//指针所指向的的类型是char
(3)int**ptr;//指针所指向的的类型是int*
(4)int(*ptr)[3];//指针所指向的的类型是int()[3]
(5)int*(*ptr)[4];//指针所指向的的类型是int*()[4]
指针的值,或者叫指针所指向的内存区或地址
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。 指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。
/*int a = 5; int *p = &a; int **pp = &p; int ***ppp = &pp; //a的值 printf("%d\n",a); printf("%d\n",*p); printf("%d\n",**pp); printf("%d\n\n",***ppp); //a的地址 printf("%p\n",&a); printf("%p\n",p); printf("%p\n",*pp); printf("%p\n\n",**ppp); //p的地址 printf("%p\n",&p); printf("%p\n",pp); printf("%p\n\n",*ppp);*/ return 0;
- iPhone第三天之C基础
- iPhone第一天之C基础
- iphone 第三天
- iPhone第五天之C基础--const变量
- C语言之第三天目标
- JNI学习之C语言第三天
- 嵌入式开发之C语言基础第三天&第四天学习笔记
- 基础加强第三天
- Java基础----第三天
- Java基础第三天
- Android基础第三天
- Java 基础 第三天
- java基础第三天
- 基础学习第三天
- java基础第三天
- Android基础第三天
- C#基础第三天
- linux--基础第三天
- 如何使用JavaExcel(jxl)读取一个文件并写入一个新文件
- 宽字符处理函数函数与普通函数对照表
- 基础函数的实现(strcpy,strcat, strcmp, atoi, itoa)【转】
- 二级联动
- 7个优秀的javascript资源
- iPhone第三天之C基础
- 判断用户设备是iPad还是iPhone的代码
- Javascript和CSS浏览器兼容总结
- 2011操作系统
- 第二周
- LGame使用记
- ubuntu gedit 中文乱码
- 常用JS验证函数大全
- android开发中xml修改后对应R.java中找不到相应资源(id等)解决办法