指针

指针(Point)

说到指针,首先要知道什么是指针,那么什么是指针呢?
在计算机中,指针是编程语言中的一个对象,利用地址,它的值是直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。
那么什么是变量呢?
变量通俗的来说就是能变化数。从本质上说就是在内存当中某一个进程里的一个临时存储区域。其作用是用于存储一些计算当中产生的一些临时性数据。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。
每一个变量空间在创建的时候都会被随机的分配地址,这个地址是个真实的物理内存地址,变量空间中的数据在变化的过程中必须保持是可兼容的,至少是同一类型。否则就会存在错误。
如果直接在代码中用变量的物理地址去访问空间中的数据的话 ,就有可能访问不到。因此为了避免地址的不确定性,引入了变量名这个概念 由变量名-地址表 来保证变量名和变量之间的关系(底层实现)。这样保证其正确性。
我们说的变量空间的地址, 其实就是C语言当中学的指针。
举个例子简单的说明下:
其中*c的含义是返回c 的值作为地址的那个空间的取值。&b的意义是返回当时声明b时开辟的地址。显然可以用赋值语句对内存地址赋值。具体说明如下:

#include<stdio.h>
void main(){
  int a=3;    //创建一个普通变量a 存3
    int b=4;    //创建一个普通变量b 存4
    int* c;     //创建一个指针变量c 指向b
    c=&b;       //将变量b的地址赋予c
    int** d;    //创建一个指向指针变量c的指针变量d
    d=&c;       //将变量c的地址赋予b
    printf("a的值=%d\n",a);//打印的a的值,输出结果为3
    printf("b的值=%d\n",b);//打印的b的值,输出结果为4
    printf("a的地址=%d\n",&a);//打印的a的地址,输出结果为1703724
    printf("b的地址=%d\n",&b);//打印的b的地址,输出结果为1703720
    printf("c的地址=%d\n",&c);//打印的c的地址,输出结果为1703716
    printf("d的地址=%d\n",&d);//打印的d的地址,输出结果为1703712
    printf("c的值=%d\n",c); //打印的是c所指向的那个变量的地址,输出结果为1703720
    printf("*c的结果=%d\n",*c);//打印的b的值,输出结果为4
    printf("d的值=%d\n",d);//打印的c的地址,输出结果为1703716
    printf("*d的结果=%d\n",*d); // 打印的b的地址,输出结果为1703720
    printf("**d的结果=%d\n",**d); //打印的b的值,输出结果为4
    // printf("%d\n",*a); 错误示范
    printf("%d\n",*&a);// 打印的a的值,输出结果为3
    printf("%d\n",&**d);// 打印的b的地址,输出结果为1703720
    printf("%d\n",*&**&d); // 打印的b的地址,输出结果为1703720
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值