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

指针的相关概念

操作系统给每个存储单元分配了一个编号,从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 
     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; 
    }
    执行结果
    指针的相关概念和定义方法_第1张图片

     

    扩展:如果在一行中定义多个指针变量, 每个指针变量前面都需要加*来修饰。
    int *p,*q; //定义了两个整型的指针变量p和q
    int * p,q; //定义了一个整型指针变量p,和整型的变量q
  3. 指针大小
    在32位系统下,所有类型的指针都是4个字节。
    因为不管地址内的空间多大,但是地址编号的长度是一样的,所以在32位操作系统中,地
    址都是四个字节。
    #include 
    
    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; 
    }
    执行结果
    指针的相关概念和定义方法_第2张图片

     

 

你可能感兴趣的:(C语言学习报告,c语言)