访问数据的两种方式:

  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语言指针的更多相关文章

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

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

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

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

  3. iOS学习之C语言函数指针

    通过函数名调用函数: int max = maxValue(4, 5); printf("max = %d\n", max);     函数类型:int (int, int) 1. ...

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

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

  5. iOS学习笔记---c语言第八天

    指针 首先将变量a的地址存放在另一个变量中,比如存放在变量b中,然后通过变量b来间接引用变量a,间接读写变量a的值.用来存放变量地址的变量,就称为"指针变量" int *p=nul ...

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

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

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

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

  8. iOS学习之Object-C语言内存管理

    一.内存管理的方式      1.iOS应用程序出现Crash(闪退),90%的原因是因为内存问题.      2.内存问题:      1)野指针异常:访问没有所有权的内存,如果想要安全的访问,必须 ...

  9. iOS学习之Object-C语言字符串和数值

    一.使用苹果帮助文档      1.帮助文档的作用:帮助开发者快速了解系统类的功能.           1)苹果每次iOS版本的升级,都会添加或者更新大量的API,并提供相应的参考文档.       ...

随机推荐

  1. 学习资料 经典SQL语句大全

    一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...

  2. CSS常用布局整理(二)

    1-2-1单列变宽布局 side列定宽300px,content列变宽,尺寸是100%-300px.核心的问题就是浮动列的宽度应该等于“100% - 300px”,而CSS显然不支持这种带有减法运算的 ...

  3. malloc、calloc、realloc的区别

    (1)C语言跟内存分配方式 <1>从静态存储区域分配.       内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量.static变量.<2> ...

  4. 手机h5 页面 iPhone 下 手机号码 蓝色字体 黑色字体

    在手机端 苹果系统下 手机号码会变成蓝色的 ,如何不让手机号变成蓝色  黑色 或者其他颜色 , 苹果真是的 原因是识别成了电话号码,然后成为了链接.解决方法: 更改链接的颜色 a{ color: re ...

  5. 织梦dedecms简略标题调用标签用法指南

    我们在使用织梦DEDECMS建站过程中,为了使调用的文章标题简短且相对完整(原文标题太长),只好使用了调用简略标题这个方法,使标题显示为简短标题,指向标题时显示完整的标题.并获得文章静态地址链接 下面 ...

  6. 将Eclipse项目导入Android Studio出现中文乱码的问题

    以前一直以Eclipse开发项目,最近正在研究Android Studio的使用,首先想到到的是将Eclispe项目导入AS. 可以方便查看以前写过的代码,然后出现了中文乱码的问题,通过搜索了一些资料 ...

  7. .NET使用ICSharpCode.SharpZipLib压缩/解压文件

    SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...

  8. [原]hdu2045 不容易系列三——LELE的RPG难题 (递推方程)

    本文出自:blog.csdn.net/svitter 原题:http://acm.hdu.edu.cn/showproblem.php?pid=2045 题意:中文不用我说了吧. 这个题目的关键就在于 ...

  9. linux device model简述

    参考: 1)<LINUX设备驱动程序>第十四章 Linux 设备模型 2)内核源码2.6.38 内核初始化的时候会对设备模型作初始化,见init/main.c: start_kernel- ...

  10. Linux 不挂载设备,获取设备的文件系统信息

    块设备挂载后,可以通过df 或者 mount命令查看设备的文件系统信息.然而,有时候需要在不挂载设备的情况下予以判断,此时可以使用如下的方法: (1)查看文件系统类型 命令: file -sL /de ...