指针

1. Int  *point=5; 这种写法是不对的,但是 int  *point=&a; 这种写法是正确的 。可以写成int  *point=(int*)5; 

2. int *point =&a; *point 代表这是一种指针型变量,变量名是point ,int *point=&a  意识是将a 的地址取出来,给point ,( 我觉得 可以将int* 看做一种数据类型,point看做变量)。

而&a 和 ;printf("%d",*point);可以看做一种逆运算, *point意味着将point 的值当做地址,然后将这个地址里的值取出来。&a 意味着将a 这个元素的地址取出来。例如:                  

       int *a=&b; //这是标准语法,等号左边是指针型变量,等号右边是数据地址

       int *a; *a=5;  //这句话编译没问题,运行出错,会报warning C4700: local variable 'point_1' used without having been initialized   这个警告,原因在于,在给初始化*a 的时候,也就是  int *a; 这一句,没有给a确切的地址,这导致*a 指向随机内存,这个时候  *a=5; 代表着 将5 赋给*a指向的内存区域 ,环境不知道将5放到哪里。

      int *a; a=&k; *a=5;  //这句话就是上一段代码的补充, 先将a初始化。然后将a指向 k在内存中的地址。最后,将5赋给a所在的地址中,就是赋给k .

3. 切记要搞清楚赋值语句左右的内容,以及数据类型,例如:

     int *a, *b; int c=100,d=200;

     a=&c; b=&d;

    *a=50;  //这句话对,将50 赋给 a 指向的内存区域,也就是c

    *b=&c; *a=&d;  //这句话错,原因在于 *b 的数据类型是int 而 &c的数据类型是地址

   

posted on 2016-03-22 16:58  miracley  阅读(154)  评论(0编辑  收藏  举报