C语言指针 - 小记

C语言指针 - 小记

  C语言提供了指针变量,能够通过指针,指向同类型的变量,进行一些譬如移位等的操作。

1.从概念本身理解指针的性质

a)指针初始化,指针赋值:

  通常,指针有两种定义方法,如下所示:
第一种:

    int *p;     //初始化先不赋值
    p=&a;       //后面在取地址符,达成指向 

第二种:

    int *q=&a;  //在初始化就完成指向

b)指针的内容:

  请记住,指针变量内存储的一定是指针所指向的变量的地址!打个比方,假如被指的那个变量a是一个房子,若存在指针变量*p指向了a,那么指针变量p就相当于是一个盒子,盒子里装的是啥东西?是这个房子所在的位置(地址)。如下所示:

    /* 指针变量中,存储的是指向的变量的地址符; */
    int c1=&a;
    int c2=p;
    printf("%d\n",c1);
    printf("%d\n",c2);
    //可以看到c1和c2输出结果一样,说明指针里面存的就是指向的变量的地址~

输出演示结果:
在这里插入图片描述

c)不同指针,指向同一个变量?

  p和q正如“例a)”所编辑的,指向了同一个int型变量a,而它们作为两个都指向了a的指针,输出其所指向的肯定是一个结果。即有:

    /* p和q是两个不同的指针,都指向了变量a */
    int x1=*p;
    int x2=*q;
    printf("(*p) = %d\n",x1);
    printf("(*q) = %d\n",x2);
    //可以看到x1和x2输出结果一样,因为指向的是同一个变量~

在这里插入图片描述

  注意: 带上*号的*p和p本身是两个不同的东西!
  指向了同一个int型变量的指针p和q,他们作为变量所储存的都是变量a的地址,即有:

    int b1=p;
    int b2=q;
    printf("p = %d\n",b1);
    printf("q = %d\n",b2);
    //可以看到b1和b2输出结果一样,因为他们存的都是所指向的变量a的地址~

在这里插入图片描述

  当然,两个指针p和q它们本就不是同一个“盒子”,只是都指示了变量a的所在的两个不同的指针变量,他们各自的地址自然肯定是不同的,如下所示:

    int b3=&p;
    int b4=&q;
    printf("&p = %d\n",b3);
    printf("&q = %d\n",b4);
    //可以看到b3和b4输出不同,
    //因为是两个不同的指针,指针自身的地址肯定不一样~

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值