指针的初步了解

一、什么是指针?

        指针就是地址,地址就是指针。

        指针就是内存地址,指针变量用来存放内存地址的变量。

        不同类型的指针变量所占用的存储单元长度是相同的,

        而存放数据的变量因数据的类型不同,所占用的存储空间长度也不同。

        有了指针后,不仅可以对数据本身,也可以对存储数据的变量地址进行操作。

二、如何获取变量地址

        利用&取出变量地址

int main()
{
    int a = 10; // a在内存中要分配空间 - 4个字节
    &a; // 取出num的地址
    printf("%p\n", &a); //%p - 以地址的形式打印
    
    return 0;
}

三、定义指针变量、存储地址

        * 定义一个指针变量

        & 是取地址运算符,获取变量的地址信息

int main()
{
    int a = 10;
    int* pa = &a; // pa是用来存放地址的,在C语言中叫pa的是指针变量
    
    char ch = 'w';
    char* pc = &ch;
    
    return 0;
}

四、获取变量的值

        * 解引用运算符

        如果把定义指针理解为包装快递,那么解引用操作就是拆包裹。

        拆出来的值就是变量的值

        通过解引用还可以修改变量的值

int main()
{
    int a = 10;
    int* pa = &a;
 
    *pa = 20; // * 解引用操作   *pa就是通过pa里边的地址,找到a
    printf("%d\n", a); //20
    
    return 0;
}

五、指针大小是否相同

        指针的大小是相同的。

        因为指针是用来存放地址的,指针需要多大的空间,取决于地址的存储需要多大的空间。

        指针是一种复合数据类型,指针变量内容是一个地址,因此一个指针可以表示该系统的整个地址集合,故按照32位编译代码,指针占4个字节,按照64位编译代码,指针占8个字节。(不是64位系统一定占8个字节,关键是要按照64位方式编译)。

        32位---32bit----4byte

        64位---64bit----8byte

上一篇:数据结构之链表+常见面试题


下一篇:两单链表有序合并