• 指针


    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的数据类型是地址

       

  • 相关阅读:
    [luoguP2221] [HAOI2012]高速公路(线段树)
    SICP:对数步数内迭代计算幂的函数
    python__tkinter之listbox&button
    C陷阱与缺陷 之 各种知识技巧
    ACM && Find Minimum in Rotated Sorted Array
    windows编程一些小知识
    Linux_C pthread 关于多线程一个简单的程序
    ACM&贪心算法
    Linux_C socket 数据报之client, server.c
    Linux_C socket 数据报之一些辅助函数
  • 原文地址:https://www.cnblogs.com/miry/p/5307430.html
Copyright © 2020-2023  润新知