A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CcrazyOne 中级黑马   /  2015-10-9 00:56  /  921 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*指针的总结*/
/*
1.指针的本质:一个能够存储地址的数据类型,同时含有一个步长信息
2.步长:就是加一减一时移动的字节数.
3.用法:
      1>定义: 指针类型 *指针名;
      2>赋值: 指针名=地址;
      3>操作:
            1)对指针的操作--根据类型确定字节数
               向高位移动(+):如 指针名+1(指针不变);++指针名(指针改变,有重新赋值)
               向低位移动(-):如 指针名-1;--指针名;
            2)对指针所指向的空间的操作:
                 取值: *指针名
                 赋值: *指针名=值
4.应用场景:
   1>指针与基本数据类型
     定义:
     赋值:
     操作:
         1)对指针的操作    *对数据本身无意义.(越界了)
         2)对指针所指空间的操作
             取值
             int b=*p;
             赋值
             *p=3;

   2>指针与构造数据类型中的用法(数组, 结构体)  难点(理解)  疑惑点

     数组
     应用举例:
     int arr[3]={1,2,3};
     方法一:用首元素的指针(*推荐)指针运算方便.
     定义赋值:
     int *p=arr;或者:int *p=&arr[0];
     操作:
     1.对指针操作:
     1.向高位移动(+): p+1(p不变),++p(p变化);
     2.向低位移动(-): p-1,--p;
     2.对指针所指空间的操作
     1.取值:
     取当前位的值: *p或p[0];
     取下一位的值: *(p+1);或p[1](等效于:p[当前角标+1]);
     取上一位的值: *(p-1);或p[-1](等效于:p[当前角标+1]);
     2.赋值:
     给当前位赋值:*p=2,; 或p[0]=2;
     给下一位赋值:*(p+1)=3;或p[1]=3;
     给上一位赋值:*(p-1)=5;或p[-1]=5;

     方法二:用整个数组的指针
     定义赋值:
     int (*p)[3]=&arr;
     操作:
     1.对指针的操作--*对数组本身无意义
     1.向高位移动(+): p+1,p++;
     2.向低位移动(-): p-1,p--;
     2.对指针所指空间的操作
     1.取值: (*p)[角标],等效于arr[角标];
     或:*((*p)+1);等效于*(arr+1); (不推荐)
     2.赋值: (*p)[角标]=2;


3 个回复

倒序浏览
third mark
回复 使用道具 举报
学习了,加油!!!
回复 使用道具 举报
不错好东西收藏了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马