深入理解c指针(一)

     

目录

 一、指针变量与地址

1、取地址操作符(&)

2、指针变量和解引用操作符(*) 

2.1、指针变量

2.2、如何拆解指针类型​编辑

​2.3、解引用操作符

3、指针变量的大小


       简单地说,指针是一个变量,它存储了另一个变量的地址。在计算机内存中,每个变量都有一个唯一的地址,指针存储了这个地址,从而可以直接访问该变量所在的内存位置。指针的引入使得 C 语言具有了更灵活的内存管理能力。  

 一、指针变量与地址

1、取地址操作符(&)

       上述代码首先创建了一个变量a,并赋值为10。同时在内存上申请4个字节的空间,存放10。其中每个字节都有地址,上图中4个字节的地址分别是:(十六进制表示)

       若要得到 a 的地址,就可以通过取地址操作符--&,注意 &a 取出的是a所占4个字节中地址较小的字节的地址。虽然整型变量占⽤4个字节,我们只要知道了第⼀个字节地址,就可以访问到4个字节的数据。

#include <stdio.h>
int main()
{
  int a = 10;
  &a;  //取出a的地址
  printf("%p\n", &a);
  return 0;
}

2、指针变量和解引用操作符(*) 
2.1、指针变量

        通过取地址操作符(&)拿到的地址是⼀个数值,比如:0x006FFD70,这个数值有时候也是需要存储起来,方便后期再使用的,那我们把这样的地址值存放在指针变量中。指针变量也是⼀种变量,这种变量就是用来存放地址的,存放在指针变量中的值都会理解为地址。注意:指针---地址,指针变量---存放地址,口头语所说的指针一般是指针变量。 

#include <stdio.h>
int main()
{
  int a = 10;
  int* pa = &a;//取出a的地址并存储到指针变量pa中
  return 0;
}
2.2、如何拆解指针类型

关于地址要注意: 

      当输入代码 int a=10;时,由于是int类型,向内存申请四个字节空间,且每个字节都有自己的地址,假设地址分别为0x10、0x11、0x12、0x13,当&a(取地址a)时,其实是取出第一个字节的地址0x10,当要通过指针变量pa将其存起来时,pa里存放的其实是第一个字节的地址0x10。

int main()
{
  int a = 10;
  int* p = &a;
  printf("%p", p);
  return 0;
}

        以该代码为例,首先查看&a(地址a)的内存, 可以发现首字节地址为0x007DFB30,继续运行后指针变量p所存储的正是a的首字节地址。

2.3、解引用操作符

       我们将地址保存起来,未来是要使⽤的,那怎么使⽤呢?在现实⽣活中,我们使⽤地址要找到⼀个房间,在房间⾥可以拿去或者存放物品。
       C语言中其实也是⼀样的,我们只要拿到了地址(指针),就可以通过地址(指针)找到地址(指针)指向的对象,就需要⼀个操作符叫解引用操作符(*)。

      下面代码中第7行就使用了解引用操作符, *pa 的意思就是通过 pa 中存放的地址,找到指向的空间,*pa其实就是 a 变量了;所以*pa=0,这个操作符是把a改成了0。

#include <stdio.h>
int main()
{
  int a = 100;
  int* pa = &a;
  *pa = 0;  //*是解引用操作符
  return 0;
}
      3、指针变量的大小
#include <stdio.h>
//指针变量的⼤⼩取决于地址的⼤⼩
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
  printf("%zd\n", sizeof(char *));
  printf("%zd\n", sizeof(short *));
  printf("%zd\n", sizeof(int *));
  printf("%zd\n", sizeof(double *));
  return 0;
}

跳转其他页面:

深入理解c指针(一)

深入理解c指针(二)

深入理解c指针(三)

深入理解c指针(四)

深入理解c指针(五)

深入理解c指针(六)

深入理解c指针(七)

 

  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C语言指针C语言中非常重要的概念,它是程序设计中最基本的数据结构之一。指针可以用于在程序中访问和操作内存中的数据,它们是C语言中最强大、最灵活的工具之一。在本篇笔记中,我们将介绍C语言指针的基本概念和用法。 1. 指针的概念 指针是一个变量,它存储了一个内存地址。在C语言中,每个变量都有一个内存地址,指针可以用来指向这个地址。通过指针,我们可以访问和操作内存中的数据,这使得C语言非常灵活和强大。 2. 定义指针变量 在C语言中,定义指针变量有两个步骤。第一步是声明指针变量的类型,第二步是用"&"符号取得一个变量的地址,并将这个地址赋给指针变量。例如: ```c int num = 10; //定义一个整型变量num int *p; //声明一个指针变量p p = &num; //将num的地址赋给指针变量p ``` 这样,指针变量p就指向了变量num的地址。 3. 操作指针变量 有了指针变量之后,我们可以通过指针变量访问和操作内存中的数据。例如,要访问变量num的值,可以通过指针变量p来实现: ```c printf("num的值为:%d", *p); //输出num的值 ``` 在这个例子中,通过"*"符号来访问指针所指向的内存中存储的值。这个符号被称为“解引用符号”,它可以用来访问指针所指向的内存中存储的值。 4. 指针的运算 指针可以进行加、减运算,这种运算是基于指针的类型和指针所指向的内存的大小进行的。例如,如果定义了一个指向整型的指针变量p,那么p+1将指向下一个整型变量的地址。同样的,p-1将指向上一个整型变量的地址。 此外,指针还可以用来访问数组中的元素。例如: ```c int arr[5] = {1, 2, 3, 4, 5}; //定义一个整型数组 int *p; //声明一个指针变量 p = arr; //将数组的首地址赋给指针变量 printf("arr[0]的值为:%d", *p); //输出数组第一个元素的值 ``` 在这个例子中,将数组的首地址赋给了指针变量p,然后通过解引用符号来访问数组中的元素。 5. 指针的应用 指针C语言中非常重要的概念,它可以用于很多方面。例如,可以通过指针来动态分配内存空间、访问硬件设备、实现复杂的数据结构等等。 总之,指针C语言中非常重要的概念,程序员需要深入理解它的概念和用法,才能够在程序设计中发挥其强大的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做完作业了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值