【C语言】第一章·第九节 初识指针

相信很多小伙伴们学习C语言时候对指针的概念都是模糊的吧,哈哈哈哈哈哈不才也是一样,所以在深入学习指针或者C语言时候咱们要弄明白什么是指针

正文开始


首先我们要知道指针是什么?

指针就是地址

在C语言中,变量等一切物体都有存储字节的空间(现默认一个空间为一个字/8个bit),每一个空间都有地址,而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。

而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。

而指针存储的就是地址。指针需要多大空间,取决于地址需要多大空间。

重要的事情说三遍!!!

有的小明就会问了,不才你怎么知道变量等一切物体都有存储字节的空间呀,我不信

那我们就举下面例子来说明

int main(){
    int a = 10; //a在内存中要分配空间的 - 4个字节
    printf("%p\n",&a);//%p是专门用来打印地址  
    return 0;
}

那么在这个函数输出的一大串内容就是a的地址

【C语言】第一章·第九节 初识指针_第1张图片

譬如上面的0097FA34就是变量a的地址

指针变量的声明

在了解指针变量的声明前,咱们先了解 '&'这个单目操作符。

&’单目操作符名为:取地址符。用于取出后面紧跟的变量地址如上面的"&a",取到的是a变量的地址。

咱们通过例子来理解怎么定义指针

例1:

int main(){
    int a = 10; //a在内存中要分配空间的 - 4个字节
    printf("%p\n",&a);//%p是专门用来打印地址  
    
    int *pa = &a;//pa是用来存放地址的,在C语言中pa就是指针变量
      //上面有*说明后面变量为指针
    // *说明了pa是指针变量,int说明了pa执行的对象是int类型
    return 0;
}

在上面例子中 *说明了pa是指针变量,int说明了pa执行的对象是int类型!

例2:

int main(){
    char ch = 'w';
    char *pc = &ch;//pc是用来存放地址的,在C语言中pc就是指针变量
      //上面有*说明后面变量为指针
    // *说明了pc是指针变量,char说明了pc执行的对象是char类型
    return 0;
}

在上面例子中 *说明了pc是指针变量,char说明了pc执行的对象是char类型

指针的初步使用

在了解指针变量的声明前,咱们先了解 '*'这个单目操作符。

‘*’单目操作符名为:解引用操作符。可以通过地址找到对应的存储空间进行修改内容。

咱们也是通过例子来理解如何初步的使用指针

例1:

int main(){
    int a = 10;
    int *pa = &a;
    *pa = 20;// *pa就是通过pa变量的地址找到a变量 即把20赋给了a
    
    return 0;
}

下面这张图作为辅助理解

【C语言】第一章·第九节 初识指针_第2张图片

蓝色线为第3行的运行步骤:第一步 把a 的内存提取出来,第二步 把a的内存赋值存入pa的指针变量中

紫色线为第4行的运行步骤:第一步用 '*' 解引用操作符来通过pa变量的地址找到a变量, 第二步进行赋值 *pa = 20 即把 a改为20。内存中存储的是二进制,补码储存。

总结(不才经典大白话)

关于指针的定义和细节咱们用一个例子来总结

int main(){
    int a = 10;
    //下面我们开始定义一个关于a的指针
    //int pa  要怎么和系统说明咱这个pa是指针呢?
    //int *pa 在pa前加一个'*'说明pa为指针
    int *pa = &a; //即为在pa中存了a的地址
    *pa = 20; //因为pa是一个地址所以在前面加了'*','*'是解引用操作符,解开了pa的地址,所以*pa就为a。那么这代码等同为:a = 20。

    return 0;
}

指针就是地址:指针其实是个变量(指针变量),这个变量存放的是地址,所以称为指针就是地址。(存放在指针中的值都被当成地址处理)。

int a = 10; // a是整形变量

int *p = &a; // p是指针变量

指针的大小:在32位平台是4个字节,在64位平台是8个字节

你可能感兴趣的:(C语言,c语言,开发语言)