Lei ❤ 指针的概述

指针

以前学习c++的时候就一直对指针这个东西模糊不清,总以为存的是数值,今天恒哥专门来讲了一下指针,下面我谈一下对指针的理解
先说下变量
因为指针指的都是变量,每一个变量空间在被创建时都会被随机分配地址,就是普通变量存的是常量池的地址,这就是为什么直接在代码中用物理地址去访问空间中数据的话,有可能是访问不到的,其实变量的地址就是指针,不过普通变量的指针指的是内存单元(内容),指针变量指的就是内容中所指向的地址。
指针是编程语言中的一个对象,利用地址,通过地址能找到所需的变量单元,意思就是可以通过它能找到以它为地址的内存单元,听起来挺绕口 例如 int a=1;int *b;b=&a
此时&a就代表a的地址 *b就可以看成找a的内存单元1所对应的地址,在普通变量中存的数字在常量池里面有对应的地址。
打个比方来说把每个内存单元比作一个房间,那么他们的地址就是一个门牌号,指针变量中保存的就是其他变量的地址,其实就是指针变量这个房间中存放的是其他房间的门牌号

【*后面跟的必须是变量指针的地址,例 *a就会报错 但是 *&a就是等于a】
【 指针不能越层**只能指向 *】
下面是示例代码

#include<stdio.h>
void main(){
    int a=1;//创建一个普通变量a 存1
    int b=2;//创建一个普通变量b 存2
    int *c;//创建一个指针变量c  指向b
    c=&b;
    int **d;//创建一个指针变量c的指针变量d
    d=&c;
    printf("a的值为=%d\n",a);//打印a的内容 1
    printf("b的值为=%d\n",b);//打印b的内容 2
    printf("&a的值为=%d\n",&a);//打印a的地址 就是门牌号
    printf("*c的值为=%d\n",*c);//读取c中b的地址 等于说是打印b的内容
    printf("c的值为=%d\n",c)//打印的是c指向的变量b的地址  等于b的门牌号   因为c的内容是b的地址
    printf("d的值为=%d\n",d)//同理打印的是c的地址
    printf("*d的值为=%d\n",*d)//打印的是c的内容 b的地址
    printf("**d的值为=%d\n",**d)//其实就是打印的是b的内容 2
}

更多的示例都可以用以这个例子进行,万变不离其宗。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值