0
点赞
收藏
分享

微信扫一扫

指针的相关概念和定义方法

登高且赋 2022-04-27 阅读 38
c语言

指针的相关概念

操作系统给每个存储单元分配了一个编号,从0x00 00 00 00 ~0xff ff ff ff,这个编号咱们称之为地址。

指针就是地址。

指针变量:是个变量,是个指针变量,即这个变量用来存放一个地址编号。

在32位平台下,地址总线是32位的,所以地址是32位编号,所以指针变量是32位的即4个 字节。

注意

  1. 无论什么类型的地址,都是存储单元的编号,在 32位平台下 都是4个字节, 即任何类型的指针变量都是4个字节大小。

  2. 对应类型的指针变量,只能存放对应类型的变量的地址。

    e.g.:整型的指针变量,只能存放整型变量的地址

扩展

字符变量 char ch; ch占1个字节,它有一个地址编号,这个地址编号就是ch的地址

整型变量 int a; a占4个字节,它占有4个字节的存储单元,有4个地址编号。

指针的定义方法

  1. 简单的指针 :

    数据类型 *  指针变量名;

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

    在 定义指针变量的时候 * 是用来修饰变量的,说明变量p是个指针变量。

    变量名是 p

  2. 关于指针的运算符
    & 取地址 、 *取值。

    &:获取一个变量的地址

    *:在定义一个指针变量时,起到标识作用,标识定义的是一个指针变量。

    除此之外其他地方都表示获取一个指针变量保存的地址里面的内容。

     #include <stdio.h>
     int main(int argc, char *argv[])
    { 
        //定义一个普通变量 
        int a = 100; 
        //定义一个指针变量
        int *p; 
    
        //给指针变量赋值
        //将a的地址保存在p中
        p = &a;
        
        printf("a = %d %d\n", a, *p);
        printf("&a = %p %p\n", &a, p);
    
        return 0; 
    }

    执行结果

     

    扩展:如果在一行中定义多个指针变量, 每个指针变量前面都需要加*来修饰。

    int *p,*q; //定义了两个整型的指针变量p和q

    int * p,q; //定义了一个整型指针变量p,和整型的变量q

  3. 指针大小

    在32位系统下,所有类型的指针都是4个字节。

    因为不管地址内的空间多大,但是地址编号的长度是一样的,所以在32位操作系统中,地

    址都是四个字节。

    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
        char *a;
        short *b;
        int *c;
        long *d;
        float *e;
        double *f;
    
        printf("sizeof(a) = %d\n", sizeof(a));
        printf("sizeof(b) = %d\n", sizeof(b));
        printf("sizeof(c) = %d\n", sizeof(c));
        printf("sizeof(d) = %d\n", sizeof(d));
        printf("sizeof(e) = %d\n", sizeof(e));
        printf("sizeof(f) = %d\n", sizeof(f)); 
    
        return 0; 
    }

    执行结果

     

 

举报

相关推荐

0 条评论