C语言指针详解——入门C语言指针,初级指针使用。

原文地址:我的个人博客点击查看

C语言教程第二弹——指针详解

    所有学过C语言的人都知道,C语言难在它的指针的使用和理解,今天,我带给大家C语言的指针的教程,供大家学习交流,如果有讲的不对的地方,请给作者邮箱留言(邮箱在底部)。

    指针是什么?指针是指向某个变量、某个元素、某个对象等的一个值,我们可以浅显的理解为:指针变量中存放了某个变量的地址,*号是寻址的符号

    让我们看一个简单的例子:

C语言代码

    上面的例子中,我们定义了一个整型的变量a=5,又定义了一个指向整型变量a的指针p,注意!我说的是指向整型的指针,而不是一个整型的指针,这是有很大的区别的。

    指针的长度是固定的,都是32位的长度(32位的长度指的是占用32个二进制,最大为2的32次方-1),如果不相信,可以运行下面的代码尝试一下:

#include<stdio.h>

void main()

{

int a = 5;

int *p = &a;

char b = 's';

char *pb = &b;

printf("p = %d\r\n", p);

printf("pb = %d\r\n", pb);

}//代码经过测试可以运行。

    它的输出结果中,指向整型的长度和指向字符型的指针的大小差别不大,所以,希望大家能理解这句话:C语言中的指针长度是固定的(如果感兴趣记一下长度是32位),不论指向的内容是什么类型,指针的长度都是一样的。

    所以,上文中,我称指针p为:指向整型的指针


 

    OK,如果大家理解了上文,我们就继续向下看,我们定义了一个整型的变量a=5,又定义了一个指向整型变量a的指针p(&符号用在这里是取地址符号,可以拿到某个变量的地址),然后打印了a的值,使用 *p=10 赋值为10,在这里,*符号指的是:去地址p中修改。(当然这不是术语,只是为了大家便于理解。)然后我们打印了a的值,发现a的值变化了。

    这就是指针的神奇之处,我们可以完全不触碰原变量,间接的修改那个变量的值,指针的实质也是需要大家理解的,在这之前,我们必须理解变量声明时系统做了什么事情!!!!!!!


 

    当我们声明变量时,系统做了什么?

系统的动作

    当执行第一句话时,程序申请了一块内存,假设这块内存的地址是20000(实际中不会这么巧,假设值),这块内存命名为a,里面存放的值为5。

    当执行第二句话时,程序又申请了一块内存,这块内存的地址暂且不谈,命名为p,里面存放了变量a 的地址,所以,我们可以通过寻址符号(*)来寻找到我们的变量a 的内存空间,直接修改里面的数据。


 

    同学问我指针的问题时,我更倾向于举这个例子:有一个人,叫a ,他家住在XX省XX市XX县XX村,他有5块钱,现在有一个公务员p ,他使用& 符号找到了a 的地址,公务员p 接到任务,要把这个人a 的钱修改为10 块钱,他就驾驶自己的汽车(*)找到了a 的存放钱的地方(寻址),然后修改为10 (*p = 10),最后a 的余额就是10 块钱了。


 

    由于指针相对比较难学,今天的指针的讲解就到这里,以后继续补充指针的知识,如果大家还有不懂得,欢迎发邮件咨询问题,祝大家天天开心^_~。

  • 12
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChuckieZhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值