关闭

C语言基础--指针和数据存储

标签: c语言数据字节与位取址取值
196人阅读 评论(0) 收藏 举报
分类:
数据的访问方式:
------------------------------------
  直接访问:直接访问内存单元中的内容
  间接访问:通过 内存单元编号 或者 数据所占字节点数 访问内存中的数据
         char        1             1个内存单元
         int         4个字节        4个内存单元
         short       2             2个内存单元
         long        48           48个内存单元
         float       4             4个内存单元                                                                                                                  double      8             8个内存单元
         %p可以将地址打印出来
---------------------------      
数据存储
   电脑内存:4G  8G  16G  1G = 1024M * 1024K * 1024B
   字节(byte):是最小的存储单元,一个字节被称为一个存储单元(内存单元),不同的数据类型所占的存储单元也不同
   位(bit):一个字节又可以划分为8
   为了正确访问内存单元,每个内存单元都有一个编号,内存单元的编号就是地址。
   内存地址 = 地址 = 内存单元标号
   内存单元中的数据才是我们关注的内容。 

   
指针
    指针是最常见的间接访问。
    指针就是内存地址,我们习惯把内存地址叫做指针,内存地址也可以简称为地址
     &取址符  可以查看一个变量的内存地址(内存首地址)
     格式化输出内存地址用%p  

        int a = 110;

        printf("a的内存地址:%p\n",&a);


   注意:
      &符号取出来的内存地址,只是变量的内存首地址,并不是变量只占这一个内存地址,变量的数据类型决定变        量占得几个内存地址。 
  ---------------------------
指针变量
      概念:存放内存地址的变量
              格式:基本数据类型 *变量名 = 内存地址;
  *取值操作符
     我们通过*来访问内存单元中的存储的值
     注意:*是取值操作符,  &是取址操作符

指针的重指向
     指针变量的赋值意味着重新指向,而不是同时指向多个地址
   如例

     int a =3, b = 5;

        int *p = &a;

        p = &b;

        printf("%p %p\n", &a, &b);

        printf("%p %d\n", p,  *p);

 


指针的类型
    定义指针类型要与取址变量的类型一致
指针变量所占的字节
    指针变量所占的字节大小取决于操作系统的位数,64位的系统,指针变量的大小为8;32位的是4.
    特别注意:
    指针变量的大小(所占字节)只与操作系统的位数有关
特别注意:
    1、如果出现*号的地方,前边有类型修饰符:int、float..,此时*号仅仅起到标示作用,即告诉编译器,这仅仅是一个指针变量
         2、 如果出现*号的地方,前边没有类型修饰符,此时*号代表取值操作符,会把指针指向的区域中的内容取出来
         3、 如果前边没有*号或者任何的类型修饰符。那这个变量就是一个指针变量,它里边存储着某一个内存地址。
//指针赋值
        C语言允许使用赋值运算符对指针进行赋值,前提是两个指针具有相同的数据类型。
传值和传址
    在传参过程中,形参会拷贝实参的值。


------------------------------------------
指针与数组
     
 C语言中,数组是构造类型,系统会分配一段连续 的内存空间,来存储数组的全部数据;
      
其中数组名代表数组首个元素的地址
      &array == &array[0];
恒等于;
      
指针变量parray相同,都指向数组的首地址(第一个元素的地址)
        
指针可以做为数组名使用
指针与数组的区别
      1、所占空间不同
            -指针:只与操作系统有关
            -数组:与元素个数和类型有关
      2、数组名是常量地址,不能被赋值不能重定向
      3、指针可以重定向
         
结构体指针变量指向的是结构体变量的首地址,也就是结构体第一个成员的地址。
结构体数组与指针的关系
     
 结构体数组的 数组名 是一个结构体 指针 常量






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3502次
    • 积分:165
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条