C语言指针有关笔记(2019-10-11)

C语言指针有关笔记(2019-10-11)

#include <stdio.h>
int main()
{
int a = 10;
int *b = &a; //b是指针型变量
int **c = &b; //c是指针的指针
    
    printf("声明部分: \n");
    printf("int a = 10; \n");
    printf("int *b = &a; \n");
    printf("int **c = &b;  \n");

    printf("输出部分: \n");
    printf("a-->  %-2d\n",a);   //打印的是a的值内容
    printf("&a--> %-2x\n",&a);  //打印的值a的地址
    printf("b-->  %-2x\n",b);   //打印的指针变量b的值,其值的内容为一个地址,实际为a变量的地址即&a
    printf("*b--> %-2d\n",*b);  //打印的是指针变量b的值所指向内存地址里面的内容,实际为a的值
    printf("&b--> %-2x\n",&b);  //打印的是指针变量b,这个变量本身的地址
    printf("c-->  %-2x\n",c);   //打印的是指针变量c的值,其值的内容实际为指针变量b本身的地址即&b
    printf("*c--> %-2x\n",*c);  //打印的是指针变量c指向内存地址里面的内容,实际为指针变量b的值
    printf("**c-> %-2d\n",**c); //打印的是指针变量c里面的指针(指针b)内容所指向的地址的内容,实际为*b的值
}



总结:


指针b(存储a变量的地址,跟变量地址打交道)
指针c(存储指针变量b的地址并不是b的值,跟指针变量地址打交道)
*c只是获取了里层指针变量b的值内容,这里只是获取指针的内容
**c才可以将里层指针变量b的值内容指向的变量内容挖出来,这里获取的是变量的内容
下面星号的操作是为了取值
对于**c可以将它分解为*(*c)
第一次先做括号里面的(*c),此时相当于提取到了b
第二次再做*b,此时就获取到了a

在这里插入图片描述

在这里插入图片描述

另外在上面基础上做了一个 “*p = 100;”的操作,见下示例以及输出图,
可以与第一张图的输出做个比较。
指针变量p,以及在将100这个数值赋值给"*p"后,其余变量的值都发生了改变,这种就是通过指针间接的把相关变量的值改变的一种方式。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值