iOS学习笔记---c语言第八天
指针
首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值。用来存放变量地址的变量,就称为"指针变量"
int *p=null; 初始值:null恒等于0 变量类型:整型指针 int *
指针变量所占字节数只于操作系统有关
指针类型转换符%p
printf("p = %p\n",p);
//c语言定义指针的时候,喜欢使用p,q,r等。
int *p = NULL;
//我们通常所说的指针,指的是指针变量
//指针变量时存放内存地址(内存编号)的变量。
printf("%p",p);
取地址符&
int a = 3; int *p = &a;
取值运算符*
int a = ;
int *p = &a;
printf("%d\n",*p);
char c = 'd';
char *q = &c;
printf("%c\n",*q);
指针的赋值代表指针的重指向。
指针的算术运算 只有加减运算
int*p = &a; 注意:指针类型决定移动几个字节
p++;//向高位移动四个字节
p--;//向低位移动四个字节
数组的内存地址
数组;用连续内存空间存储数据的构造类型 数组名:数组元素首地址
eg:int array[3]={1,3,8};//array 恒等于 &array[0]
int arr[] = {,,,,};
int *p = arr;
*(p+) = ;//间接操作
arr[] = ;//直接操作
for (int i = ; i<; i++) {
printf("%d ",arr[i]);
}
数组名是一个常量指针 不能被修改 下面是错误写法 arr=p; //arr是常量数组名,p是指针变量
指针与数组的区别
1.所占空间不同
-指针:只于操作系统位数有关
-数组:与元素个数和类型有关
2.数组名是常量地址,不能被赋值
思考:数组元素类型和指针类型不匹配会怎么样?
short a[] = {,,,};
int *p1 = a;
char *p2 = a;
printf("%d\n",*p1);
printf("%d",*p2);
//输出458755 3 从低到高 00000011 00000000 00000111 00000000 00001001 00000000 00000001 00000000
int *p1 中a变成 00000000 00000111 00000000 00000011 四个字节
char *p2 中a变成 00000011 一个字节
指针与字符串
字符指针可以操作单个字符,也可以操作字符串。
char string[] = "iphone";//string为数组名
char *p = string;//指向字符数组首地址
*(p+) = 'v';//操作单个字符
printf("%s",p + );//操作整个字符串
//输出vphone
指针数组
存放指针的数组为指针数组
eg:char *string[3] = {"ios","android","win8"};
char *p1 = "iOS";
char *p2 = "Android";
char *p3 = "win8";
char *string[] = {p1,p2,p3};
//char *string[3] = {"iOS","Android","win8"};
for (int i = ; i<; i++) {
printf("%s ",string[i]);
}
printf("\n %c",*(string[]+));//输出o
printf("\n %c",string[][]);//输出o
可以用指针修改字符数组,但不可修改常量字符串
指针函数
void swap(int x,int y) {
int temp = x;
x = y;
y = temp;
printf("x = %d y = %d\n",x,y);
}
void swap2(int *x,int *y)
{
printf("---*x = %d,*y = %d",*x,*y);
int temp = *x;
*x = *y;
*y = temp;
printf("---*x = %d,*y = %d",*x,*y);
}
int main(int argc, const char * argv[])
{
int a = ,b = ;
// swap(a,b);
swap2(&a, &b); printf("a = %d b = %d",a,b);
swap不能使a,b交换,,,swap2可以使a,b交换
iOS学习笔记---c语言第八天的更多相关文章
- iOS学习笔记---oc语言第八天
属性 能在一定程度上简化代码,并且增强实例变量的访问安全性 属性的声明:使用@property声明属性 eg:@property NSSstring *name;相当于@interface中声明了两 ...
- IOS学习笔记07---C语言函数-printf函数
IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...
- IOS学习笔记06---C语言函数
IOS学习笔记06---C语言函数 -------------------------------------------- qq交流群:创梦技术交流群:251572072 ...
- iOS学习笔记---oc语言第一天
第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++ java ...
- iOS学习笔记---oc语言第九天
初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...
- iOS学习笔记---oc语言第六天
Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函 ...
- iOS学习笔记---oc语言第五天
字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...
- iOS学习笔记---oc语言第四天
字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...
- iOS学习笔记---oc语言第三天
继承.初始化方法 一.继承 继承的上层:父类 继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...
随机推荐
- linux下不能使用shutdown命令
命令查看: #echo $PATH /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/sbin;/ ...
- HideProcess
#ifndef CXX_HIDEPROCESS_H # include "HideProcess.h" #endif #ifdef _WIN64 #define ActivePro ...
- Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.
Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The ...
- [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段 <译>
multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在“了解你的数据”一节中提 ...
- nginx日志切割
脚本完成后将其存入 Nginx 安装目录的 sbin 中,取名为 cut-log.sh,之后使用 crontab -e 新增一个定时任务,在其中增加执行这个脚本: #!/bin/bash ## 零点执 ...
- placeholder在IE8中兼容性问题解决
placeholder是HTML5中的一个属性,可以在文本框中设置placeholder属性来显示一些提示性的文字,但对IE10以下的浏览器不支持,下面方法可以让placeholder能够使用在IE1 ...
- jstl c:choose>、<c:when>和<c:otherwise>标签
<c:choose>.<c:when>和<c:otherwise>在一起连用,可以实现Java语言中的if-else语句的功能.例如以下代码根据username请求 ...
- SQL CAST, CONVERT 比较
本文转自:http://www.cnblogs.com/denylau/archive/2010/12/01/1893371.html if (@StartTime > @EndTime) ...
- android之DOM生成与解析
DOM解析不适合于进行大数据文件的操作,DOM解析适合于对文件进行修改和随机存取的操作. DOM生成 //判断一下是否存在sdcard if(!Environment.getExternalStora ...
- redis 详解
什么是redis? redis 是一个基于内存的高性能key-value数据库. (有空再补充,有理解错误或不足欢迎指正) Reids的特点 Redis本质上是一个Key-Value类型的内存数据库, ...