020day(指针的基本概念和用法,意义和互相赋值)

来源:互联网 发布:深圳市软件企业 退税 编辑:程序博客网 时间:2024/05/29 19:25

172210704111-陈国佳总结《2017年10月30日》【连续020天】

标题:指针的基本概念和用法,意义和互相赋值;

内容:A.观看MOOC8.1,8.2;

           B.(a).指针的基本概念:每个变量都被存放在从某内存地址(以字节为单位)开始的若干个字节中;“指针”,也叫“指针变量”,大小为4字节(或8字节,64位);其内容代表一个内存地址。

       通过指针可对该指针指向的内存区域进行读写。

如:int *p; // p是一个指针,变量p的类型是int *

       char * pc; //pc是一个指针,变量pc的类型是char *

       float *pf;    //pf 是一个指针,变量pf的类型是float*

int *p =(int *)40000;  //强制类型转换;//p指向地址40000,地址p就是地址40000;*p就代表地址40000开始处若干个字节的内容;

*p =5000; //将地址40000处起始的若干个字节的内存空间里写入5000(在这里“若干”是sizeof(int)

int n =*p; //将地址40000处起始的若干字节的内容赋值给n; 

      总结: T * p;   //  p 的类型: T  *         

//       *p 的类型: T

通过表达式 *p,可读写从地址p开始的sizeof(T)个字节

*p  等价于存放在地址p处的一个T类型的变量

* 间接引用运算符 ,sizeof(T*)    4字节(8(64位电脑));

       指针用法: char ch1 ='A';

             char * pc =&ch1; //使得pc指向变量ch1

【&   :取地址运算符   &x  :变量x的地址(即指向x的指针)】

             * pc ='B';      //使得ch1 ='B'

             char ch2 =* pc;  //使得ch2 =ch1

             pc =& ch2 ;    //使得pc 指向变量ch2

             *pc ='D';          //使得ch2 =‘D'

            (b).有了指针,就有了自由访问内存空间的手段

在C++中,用指针p指向a的地址,然后对p进行加减操作,p就能指向a前或后的区域;

不同类型的指针,必须经过强制类型转换,才能直接互相赋值;

如: int *pn, char *pc ,char c =0x65;

         pn =pc;   //类型不匹配,编译出错

         pn =& c; //同上

        pn = (int *  ) & c;

        int n = * pn ;          //n值不确定  //n得到了4个字节,但只有第一个字节(0x65)已知

       *pn =0x12345678;        //编译能过但运行可能出错(越界)

明日计划:指针的运算











       

原创粉丝点击