黑马程序员——IOS基础(地址和指针)
来源:互联网 发布:淘宝旺旺卖家版 千牛 编辑:程序博客网 时间:2024/04/28 17:34
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、变量的地址和指针
变量的地址:计算机的内存是以字节为单位的一片连续的存储空间,每一个字节都有一个编号,这个编号就是该内存的地址,并
且这些编号是连续的。而一个变量实质上代表了“内存中的某个存储单元”,而这些存储单元的编号就是该变量的地 址。
指针:指针是用于存放变量的地址,用于存放变量地址的变量称为“指针变量”。
二、指针变量的定义和指针变量的基类型
1.定义指针变量的一般形式如下:
类型名 *指针变量名1; *指针变量名2,...........;
例如:
int *p,*q;
注意:每个变量前的星号是一个说明符,用来说明该变量是指针变量。变量前的星号不可省略,若省略了星号说明符,就变成了
将p和q定义为整形变量。
2.指针变量的基类型:在这里主要说明一下为什么指针必须区分基类型。一个指针变量中存放的是一个存储单元的地址。这里“一 个存储单元”中的“一”所代表的字节数是不同的:对short int类型整数而言,它代表2个字节;对int类型而 言,它 代表4个字节,这就是基类型的不同含义。在涉及指针的移动,也就是要对地址进行增减运算,这时 指针移动的最小单位是一个储存单元,而不是1个字节。因此对于基类型不同的指针变量,其内容增1、减1 所“跨越” 的字节数不同,因此,基类型不同的指针变量不能混合使用。
三、给指针变量赋值
1.通过求地址运算符(&)获取地址值
int k=1, *q, *p;
则赋值语句:
q=&k;
说明:求地址运算符&只能应用于变量和数组元素,不可以用于表达式、常量。
2.通过指针变量获取地址值
int k=1, *q, *p;
则赋值语句:
q=&k;
p=q;
这样指针变量p、q都指向了变量k。
四、对指针变量的操作
1.通过指针来引用一个存储单元
C语言提供了间址运算符“ * ”,当指针变量中存放了一个确切的地址时,就可以用“ * ”通过指针来引用该地址的存储单元。
int *p, i=10, j;
p=&i; /* p通过地址运算符&获得i的地址 */
j=*p; /* 指针变量p存储的是i的地址,*p等价于i,即将i的值赋给j (j=i)*/
由于“ * "操作的的对象是一个确切的地址值,所以j=*p;也可以表示为:
j=*(&i);
扩展:
int * *p, *s, k=20;
s=&k; /* *s代表存储单元k */
p=&s; /* *p代表存储单元s */
因此 * *p也代表存储单元k。
2.移动指针
移动指针就是对指针变量加上或减去一个整数,或通过赋值运算,使指针变量指向相邻的存储单元。因此,只有当指针指向一串连续的存储
单元时,指针的移动才有意义。
例:
a[0] a[1] a[2] a[3] a[4]
1122334455 p q a[0] a[1] a[2] a[3] a[4]
1122334455 p q q = p+2; /*如上第一个图所示,使指针q指向存储单元a[2] */
q++; /* 向高地址移动指针q,使指针q指向存储单元a[3] */
q++; /* 向高地址移动指针q,使指针q指向存储单元a[4] */
q--; /* 向低地址移动指针q,使指针q指向存储单元a[3] */
(指针可以进行比较,通常两个或多个指针指向同一目标时比较才有意义。
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
- 黑马程序员——IOS基础(地址和指针)
- 黑马程序员--iOS--C基础(指针)
- 黑马程序员 ——ios基础 ——指针
- 黑马程序员——ios基础---C语言:字符串、指针
- 黑马程序员——零基础学习iOS开发——06 字符串、指针、指针和数组、指针和字符串、指针和函数
- 黑马程序员-iOS基础-C语言基础(五)指针
- 黑马程序员——IOS基础(OC基础)
- 黑马程序员——c语言基础:指针函数和函数指针
- 黑马程序员——C语言日志——指针、地址和变量值
- 黑马程序员——IOS基础---C语言学习之复杂数据类型之指针
- 黑马程序员—IOS基础之C语言—数组与指针
- 黑马程序员——ios开发基础之C语言数组、指针与结构体
- 黑马程序员———ios基础
- 黑马程序员---IOS基础---指针函数与函数指针
- 黑马程序员—指针
- 黑马程序员——IOS基础---标识符、常量和变量(C语言)
- 黑马程序员——IOS基础(用户标识符的作用域和存储类)
- 黑马程序员:iOS基础——个人笔记(一)
- html基础学习之视频播放
- 【BZOJ 3053】 The Closest M Points
- Android酷炫实用的开源框架(UI框架)
- 常用EXE文件反编译工具
- android sdk无法下载及解决办法
- 黑马程序员——IOS基础(地址和指针)
- Android 性能测试实践(一)
- 10款iOS高效开发必备的Objective-C类库
- Linux shell 脚本攻略 学习笔记-5
- ajax跨域请求解决方案
- 再谈协方差矩阵之主成分分析
- 积跬步至千里——算法强化训练(5)关于类的几个操作
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
- 学习Handler的一些用法