指针

首先将变量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语言第八天的更多相关文章

  1. iOS学习笔记---oc语言第八天

    属性 能在一定程度上简化代码,并且增强实例变量的访问安全性 属性的声明:使用@property声明属性  eg:@property NSSstring *name;相当于@interface中声明了两 ...

  2. IOS学习笔记07---C语言函数-printf函数

    IOS学习笔记07---C语言函数-printf函数 0 7.C语言5-printf函数 ------------------------- ----------------------------- ...

  3. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  4. iOS学习笔记---oc语言第一天

    第一讲 初始类和对象 c语言的超集,允许在oc中使用c语言源代码.编译器兼容c语言程序 具备完善的面向对象特性 包含一个运行时系统 类库丰富 面向对象编程 oop 面向对象语言:c++  java   ...

  5. iOS学习笔记---oc语言第九天

    初级内存管理 iOS应用程序出现crash(闪退),90%以上是内存问题////其他:数组越界,方法只声明没实现 内存问题体现在两个方面:内存溢出\野指针异常 内存溢出:程序运行超出内存上限 野指针异 ...

  6. iOS学习笔记---oc语言第六天

    Block .数组高级 block本质上就是匿名函数(没有名称的函数) block语法和函数指针很相似 回顾函数 函数:C语⾔中,实现某一类功能的代码段. 完整的函数包含两部分:函数声明.函数定义 函 ...

  7. iOS学习笔记---oc语言第五天

    字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key- ...

  8. iOS学习笔记---oc语言第四天

    字符串 数组 一.使用苹果帮助文档 学会使⽤用苹果帮助⽂文档是开发者的⼀一项技能 Inherits from 继承⾃自 Conforms to 遵循什么协议 Framework 属于哪个框架 Avai ...

  9. iOS学习笔记---oc语言第三天

    继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量 ...

随机推荐

  1. POJ 1850 Code 字符串 难度:1

    题意: 1 如果是严格升序的字母字符串,那么可以输出非0解码,否则不能译码输出0 2 字符串解码 遵循递增原则,其值为 到现在为止的所有按字母序小于该字符串的数量 + 1; #include < ...

  2. C#保存登录用户名供其他页面调用

    一.保存登录用户名供其他页面调用 步骤: (1)项目自带的Program.cs,类方法里定义登录的用户名为全局变量loginid,这样整个项目都可以调用它 static class Program { ...

  3. C#获取指定日期为一年中的第几周

    /// <summary> /// 获取指定日期,在为一年中为第几周 /// </summary> /// <param name="dt">指 ...

  4. jsoup Cookbook(中文版)--爬虫(java)

    转载:http://www.open-open.com/jsoup/ 目录: 入门 解析和遍历一个html文档 输入 解析一个html字符串 解析一个body片断 根据一个url加载Document对 ...

  5. wp8.1 C#技巧: Data和ViewModel类编写

    在Data.cs namespace PicApp { [DataContract] class DataItem : PropertyChangeNotification { public even ...

  6. hihocoder 1236(2015北京网络赛 J题) 分块bitset乱搞题

    题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给 ...

  7. hdu 1034 (preprocess optimization, property of division to avoid if, decreasing order process) 分类: hdoj 2015-06-16 13:32 39人阅读 评论(0) 收藏

    IMO, version 1 better than version 2, version 2 better than version 3. make some preprocess to make ...

  8. 在oracle中创建空间索引

    Oracle spatial可以方便的存储空间数据,大量的空间数据必需要使用空间索引去查询.在oracle中创建空间索引必需先建立元数据,否则无法创建索引.创建元数据的代码: insert into ...

  9. matlab 画框(三) 画框并保存图像

    initstate = [x y w h];%-----------------------------------------Show the tracking resultimshow(uint8 ...

  10. HTML5实战教程———开发一个简单漂亮的登录页面

    最近看过几个基于HTML5开发的移动应用,比如臭名昭著的12036移动客户端就是主要使用HTML5来实现的,虽然还是有点反应迟钝,但已经比较流畅了,相信随着智能手机的配置越来越高性能越来越好,会越来越 ...