zoukankan      html  css  js  c++  java
  • 指针的定义

    指针的概念

    指针变量也是变量

    指针存放的内容是一个地址,该地址指向一块内存空间

    指针是一种数据类型

    指针变量的定义

    可以定义一个指向变量的指针变量

    int *p; //表示定义一个指针变量

    *p  //代表指针所指内存的实际数据

    切记指针变量只能存放地址,不能将一个int变量直接赋值给一个指针

    内存的最小单位是BYTE

    对于内存每个BYTE都有一个唯一不同的编号

    这个编号就是内存地址

    一个地址编号,对应的是BYTE的空间大小

    一个int 4个BYTE 占用四个地址编号

    地址编号

    在32位系统下,是一个4个字节的无符号的整数

    在64位系统下,是一个8个字节的无符号的整数

    1个char 占用1个地址编号

    long long 占用8个地址编号

    #include<stdio.h>
    
    int main()
    {
        int *p;  //定义了一个可以执行int类型地址的指针变量,名字叫 p   int *是一种数据类型 
        int a;   //定义了一个int类型的变量,名字叫a 
        a = 1;
        p = &a;  //把a的内存地址赋值给p
        *p = 10;  //通过指针变量间接的访问a的值,*p代表指针指向变量的值,p代表指向变量的地址 
        printf("%p
    ", p);   //printf函数族中对于%p一般以十六进制整数方式输出指针的值
                             //输出的是首地址的第一个编号  
        printf("a = %d
    ", a);    //输出a的值是10
        a = 100;
        printf("*p = %d
    ", *p);    //输出*p是100
        
        int b = 2;
        p = &b;    //又指向了b的地址 
        printf("%d
    ", *p); 
        void *p2;  // 可以指向任何类型的地址,void代表无类型                
        return 0; 
     } 

    数据类型不兼容的时候,会出现错误,强转也会出错

    char *p1;

    int *p2;

    long  long *p3;

    printf("%lu, %lu, %lu ",sizeof(p1), sizeof(p2) ,sizeof(p3) );

    不管指向什么类型的变量,在同一系统下,地址的大小总是一样的

    32位 4      64位 8

  • 相关阅读:
    beta阶段贡献分配实施
    Beta发布
    Beta发布——视频博客
    Scrum立会报告+燃尽图(Beta阶段第二周第七次)
    Beta发布——美工+文案
    Scrum立会报告+燃尽图(Beta阶段第二周第六次)
    Scrum立会报告+燃尽图(Beta阶段第二周第五次)
    Scrum立会报告+燃尽图(Beta阶段第二周第四次)
    Scrum立会报告+燃尽图(Beta阶段第二周第三次)
    20181011-1每周例行报告
  • 原文地址:https://www.cnblogs.com/yangxiaoqin/p/8432358.html
Copyright © 2011-2022 走看看