C语言指针

C语言指针

  指针章节,在C语言课程中,难中难,重中重。
  课堂上老师的反复讲解,台下的学生越陷越乱,越来越纠结。
  于是积极求学者,开始上B站大学,csdn苦修...

本文适用于是对上完课,对指针已经有一定了解的食客食用,目的是理清思路,验证疑惑…

  1. 一些必须先要有的概念

  2. 为什么要引入指针

  3. 编程验证


  1. 一些必须先要有的概念

    内存,通白的说,计算器在运行程序,不会直接在你的硬盘数据操作,而是在内存划分一片空间,进行运算结束后释放。
    简单来理解,以下

    • 内存好比宿舍
    • A B C D E F G H宿舍名等同于变量名
    • 门牌号101 102 …相当于地址;

在这里插入图片描述

```c
int A;
int*p=&A;
```
  1. 为什么要引入指针

    为什么要引入指针?
    直接int a=666赋值,加减乘除,选择,循环,数组,结构体不一样能用?
    因为初学者仅站在了第一层,发明指针的人已经站在了平流层…
    指针的好处,暂时了解一下,可以总结:指针能让编程更高效,你现在要了解学习。

    • 直接操作内存
    • 高效传递数据
    • 实现动态内存管理
  2. 编程验证

    • 总程序点我

    • 验证1. p中到底存的是不是A的地址
      代码:

        //验证p中到底存的是不是A的地址
        //( 注意:%p为标准化16位地址输出)
        printf("A的地址 %p\n", &A);
        printf("p中存储的数据 %p\n", p);
      

      输出结果:打印出A的地址,再打印出p(不带*号)的内容
      (输出结果相同的地址)

      p就是存放A的地址(不带*号)
      在这里插入图片描述

    • *验证2.*p是不是存着A的值
      代码

        //验证2. *p是不是存的是A的值
        A = 9966; //随机重新赋值
        printf("*p=%d\n", *p);//打印*p验证
      

      输出结果:将A随机赋值一个数,打印看下*p的结果,结果相同
      在这里插入图片描述

    • 验证3. *p能不能修改A的值
      代码

       //验证3. *p能不能修改A的值; A重新赋值*p会不会变化
      
        *p = 10086;              //*p随机赋值
        printf("A=%d\n", A);     //打印A
        printf("*p=%d\n", *p);   //打印*p
      

      输出结果:结果很明显。打印*p和A结果一样。
      结论对 *p操作等同于对A进行操作
      在这里插入图片描述

总代码

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
int main()
{
  int A;
  A = 10;        //给A赋值,后续验证用指针修改
  int* p = &A; //创建指针:整型指针变量p,并指向A的地址
             //其中int*表示是整形类型指针,
             // 就类比int A中的int,指的是一种数据类型
            
  //验证1. p中到底存的是不是A的地址( 注意:%p为标准化16位地址输出)
  //printf("A的地址 %p\n", &A);
  //printf("p中存储的数据 %p\n", p);

  //验证2. *p是不是存的是A的值
  //A = 9966;
  //printf("*p=%d\n", *p);

  //验证3. *p能不能修改A的值; A重新赋值*p会不会变化

  *p = 10086;              //*p随机赋值
  printf("A=%d\n", A);     //打印A
  printf("*p=%d\n", *p);   //打印*p
  


  return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值