iOS学习之C语言指针
访问数据的两种方式:
1.直接访问;
2.间接访问:先找到内存地址,根据地址访问存储单元。(内存地址 被称为指针)
定义指针变量:
类型修饰符 *指针变量名 = NULL;
NULL表示空指针,相当于0,用来给指针变量赋初始值。
通常情况下,把指针变量称为指针,p,q都是指针,存储的内容是地址。
取址运算符:&
通过指针变量读取存储空间的数据:
取值运算符:*
存储空间:指针的存储空间与操作系统有关
32位的操作系统,指针的存储空间占4个字节
64位的操作系统,指针的存储空间占8个字节
区分指针中 * 的作用:
定义指针变量的时候,int *p = NULL; 这个*用来描述p是一个指针变量;
取值的时候,*p,这个*是取值运算符。
指针的运算:指针只有加减运算,没有乘除运算
定义指针的类型,决定了指针在运算时偏移几个字节
第一种:p + n
从p的指向存储空间开始,向高位偏移n个数据类型的字节数
p的指向没有发生改变
第二种:p - n
从p的指向的存储空间开始,向低位偏移n个数据类型的字节数
p的指向没有发生改变
第三种:p++ (p = p + 1)
从p指向的存储空间开始,向高位偏移
p的指向发生改变
第四种:p-- (p = p - 1)
向低位偏移
p的指向发生改变
数组名是数组元素首地址。
通过指针访问数组元素:
1.下标法
printf("array[0] = %d\n", p[0]);
printf("array[1] = %d\n", p[1]);
2.指针法
通过指针的偏移计算数组中的元素
*(指针变量/ 数组名 + 下标)
指针变量和数组的区别:
1.指针可以重指向,但是数组名是常量地址,不可以修改
2.不能通过指针计算数组元素个数
指针的存储空间:4或8个字节,数组的存储空间 = 元素个数 * 每个元素所占的字节数
指针的类型一定要和数组元素的类型相匹配。
指向数组的指针可以读取和修改数组元素,指向常量字符串的指针,只能读取,不能修改。
iOS学习之C语言指针的更多相关文章
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- iOS学习之C语言函数指针
通过函数名调用函数: int max = maxValue(4, 5); printf("max = %d\n", max); 函数类型:int (int, int) 1. ...
- iOS学习笔记---oc语言第一天
第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++ java ...
- iOS学习笔记---c语言第八天
指针 首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值.用来存放变量地址的变量,就称为"指针变量" int *p=nul ...
- iOS学习笔记---oc语言第九天
初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...
- iOS学习笔记---oc语言第六天
Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函 ...
- iOS学习之Object-C语言内存管理
一.内存管理的方式 1.iOS应用程序出现Crash(闪退),90%的原因是因为内存问题. 2.内存问题: 1)野指针异常:访问没有所有权的内存,如果想要安全的访问,必须 ...
- iOS学习之Object-C语言字符串和数值
一.使用苹果帮助文档 1.帮助文档的作用:帮助开发者快速了解系统类的功能. 1)苹果每次iOS版本的升级,都会添加或者更新大量的API,并提供相应的参考文档. ...
随机推荐
- TCP/IP详解学习笔记(8)-- UDP:用户数据报协议
1.UDP概述 UDP是一种无连接的, 即发送数据前不需要建立连接,因此减小的开销和发送数据的延迟. UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表. UDP是面向报文 ...
- Solarwinds Orion NPM实战视频演示
Orion Network Performance Monitor是全面的带宽性能监控和故障管理软件,能监控并收集来自路由器.交换机.服务器和其他SNMP设备中的数据,您可以直接从Web浏览器上观察您 ...
- [Nginx 2] form表单提交,图片上传
导读:昨晚恶补了一些Nginx服务器的东西,从整体上对Nginx有一个初步的了解.上午去找师哥问了问目前项目中的使用情况,然后就开始上传图片了.这里就简单总结整理一下今天的成果,以后接着提升.简单粗暴 ...
- SPSS时间序列:频谱分析
一.频谱分析(分析-预测-频谱分析) “频谱图”过程用于标识时间序列中的周期行为.它不需要分析一个时间点与下一个时间点之间的变异,只要按不同频率的周期性成分分析整体序列的变异.平滑序列在低频率具有更强 ...
- 通用简单的 分页 SQL
select ID,TITLE,CONTENT,USERNAME,REALNAME,UNIT,UNITID,NOWTIMES,ACCEPTERID,ACCEPTERNAM ...
- Windows server 2008R2部署服务批量安装Windows7教程
利用Windows server 2008 R2下的Windows部署服务可以批量安装Windows 7,以下简称WDS. WDS需要用到域和dhcp.DNS服务,所以,基础环境必须要有域控制器,dh ...
- JS时间
function checkStartTime(){ var d1 = new Date(); var endTime = document.getElementById("secCreat ...
- 样式重置 取消input默认样式
body, h1, h2, h3, h4, h5, h6, hr, p,blockquote, dl, dt, dd, ul, ol, li,pre, form, fieldset, legend, ...
- Solaris磁盘设备
Solaris的磁盘分区称为分片(slice),在磁盘上,一个环形就是一个分区分片的命名通常是c#t#d#s#c:Controller number,控制器标号,c0就是第一个控制器t:Taget n ...
- docker开发_在basic image的基础上创建自定义的image
方法一:docker commit 1. 跑一个basic image,docker新建了一个容器 root@ubuntu:/home/thm/docker/test# docker run -i - ...