你的位置:首页 > 软件开发 > 操作系统 > IOS 阶段学习第八天笔记(指针)

IOS 阶段学习第八天笔记(指针)

发布时间:2015-06-28 12:00:20
IOS学习(C语言)知识点整理一、指针1)概念:存储变量的地址的一个变量。2) 数据存储类型分析 1、text (代码段) :存储二进制的可执行代码 2、data(初始化的数据段) 存储初始化的全局变量以及初始化的static修饰的变量,分为只读数据段 ...

                                                        IOS学习(C语言)知识点整理

一、指针

1)概念:存储变量的地址的一个变量。

2) 数据存储类型分析

   1、text (代码段) :存储二进制的可执行代码

   2、data(初始化的数据段) 存储初始化的全局变量以及初始化的static修饰的变量,分为只读数据段

     (如:字符串常量,整型常量)及可读可写数据段,静态存储。

   3、data(未初始化的数据段)存储未初始化的全局变量及未初始化的static修饰的变量,静态存储。

   4、heap(堆区) 内存使用需要手动申请,手动释放,空间非常大,通常存储大容量的数据,执行效率比较低

       使用比较麻烦,动态存储。

 5、stack(栈区)内存空间比较小,函数调用局部变量开辟都是栈上,使用效率非常高。

3)取地址符 “&”,间接寻址符 “ * ”,“%p” 打印地址的格式字符

4)指针标示符:* 例如: int *p   表示定义了一个指针p,*是指针标示,int表示p指向的类型(里面存储的是int型变量的地址)

5)各种类型的指针,在内存中拥有的空间都是一样的,64位系统下面都是8个字节(32位是4个字节)。 

6)指针运算 指针对象 ++,表示指向地址向后偏移,偏移量为sizeof(指向的类型);- -则表示向前偏移。

7)野指针:未初始化值的指针,里面是个随机地址,可以任意修改该地址对应的值,会给系统造成不可控制的影响。

8)空指针 p=NULL=0; 0是非法地址,0地址不可赋值,不可读写。

9)指针的优点

   1、为函数提供修改调用变量的灵活手段

   2、可以使函数有多个返回值

   3、可以改善某些子程序的效率 ,在传递数据时,如果数据块较大(比如数据缓冲区域或比较大的结构),这时就可使用指针传递地址而

        不是实际数据,即可提 高传输速度,又节省大量内存。

  4、为动态数据结构(如 二叉树、链表)提供支持。

10)void* 指针,通配指针,可是指向任意类型。

11)指针的应用,函数中指针作为函数的入参。

12)int *a;  指针变量,指向int型数据。

13)指针数组  即指向一个数组类型的指针   

       例如: int *p[4] : 表示4个指向int的指针.每个指针都是独立的,没有关系; p[i] 是一个 int 型指针

       p[i]=*(p+i)

 实例代码:

 1 int add(int *a[],int len1,int len2) 2 { 3   int sum = 0; 4   for(int i=0;i<len1;i++){ 5     //a[i]第i个指针=第i个一维数组 6     for(int j=0;j<len2;j++){ 7       sum = sum + *(a[i]+j); 8     } 9   }10   return sum;11 }12 13 int main()14 {16   int a[4][3]={{1,2,3},{4,5,6}, {7,8,9},{10,11,12}};17   int *p[4];//指针数组,没初始化不能用,野指针组18   for(int i=0;i<4;i++){19     p[i]=a[i];//a[i]表示第i行的一个数组20   }22  int sum = add(p,4,3);23  printf("sum = %d\n",sum);24  return 0;25 }

原标题:IOS 阶段学习第八天笔记(指针)

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。