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的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...
随机推荐
- 浅谈C++源码的过国内杀软的免杀
以下只是简单的思路和定位.也许有人秒过,但是不要笑话我写的笨方法.定位永远是过期不了的. 其实这里废话一下 , 本人并不是大牛 ,今天跟大家分享下 .所以写出这篇文章.(大牛飘过) 只是个人实战的经验 ...
- HDU 1693 二进制表示的简单插头dp
题目大意: 找到多条回路覆盖所有非障碍格子,问这样回路的种数 这里的插头与URAL1519 不一样的是 只要管它是否存在即可,只需要1个二进制位表示状态 #include <cstdio> ...
- Section 1.4 Packing Rectangles
本来是USACO Training的1.4.1的,但是介于今早过了食物链想起了这道题实在是太怨念了,翻出自己写的AC程序居然有5KB!! 思路很简单,枚举,而且就图中的六种情况.但是第六种变化状况太多 ...
- 使用OTT处理oracle中的对象(一) OTT配置
OTT是OCI中访问对象类型数据的重要工具,它将数据库中的对象数据类型或集合类型映射为C++中的结构体类型.OTT是Oracle自带的,但是使用前必须配置一下环境变量.在计算机->属性-> ...
- jQuery 通用表单方法
表单验证一直是一个麻烦的事情,让很多人望而退步,之前想过一个验证的好方法,但是有bug,昨晚请教了juyling.com的王员外,顺利解决. 以下是js代码 function mySubmit ...
- scrollView自动加载数据demo
package combaidu.mylistsrollview; import java.util.ArrayList;import java.util.List; import com.baidu ...
- Linksys WRT120N路由器备份文件解析
Perusing the release notes for the latest Linksys WRT120N firmware, one of the more interesting comm ...
- Manacher算法 , 实例 详解 . NYOJ 最长回文
51 Nod http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1089 Manacher 算法 定义数组 p[i]表示以i为 ...
- C++ algorithm 里的sort函数应用
MSDN中的定义: template<class RanIt> void sort(RanIt first, RanIt last); //--> 1)template< ...
- Storyboard的使用以及使用多个Storyboard的方法
一, storyboard用起来很是方便.在开发中很有可能是多个人创建了多个storyboard.但最后,总是要把所有的storyboard“合并”在一起.总结一下自己的想法,不知道有没有其他的方式“ ...