C语言对指针的初步理解1(亲身体会)

因为最近在看一些C语言的书,看到有很多人刚开始接触C语言时对于指针问题比较头疼,于是就准备出一期关于C语言指针的自我理解,希望对接触C语言的有一点帮助,在讲指针之前我想告诉大家在C语言中的数据结构这么一说,我们所了解的C语言除了支持多种基本数据类型外,还支持丰富的派生类型和自定义类型,简要的可以从数据类型分为三大类,分别为:派生类型,基本类型,自定义类型。派生类型又包括了:数组,函数,指针。基本类型包括:整型,浮点型,字符型。自定义类型包括:结构体,共同体,枚举。我们所讲的指针便是一种派生数据类型。它是从C语言的一种基本数据类型创建出来的。我们首先要知道指针是以内存地址作为值的,由于内存地址表示表示在计算机中保存程序指令和数据的位置,因而可以用指针来直接访问和操作存储在内存中的数据,这也是C语言指针的强大之处,
当我们声明一个变量时,系统是在内存中分配适当的存储空间,以保存该变量的值,我们可以举一个简单的例子,int a=20;我们声明一个a值,该语句传达给计算机便是为整形变量a分配一个储存空间,并把数值20存放在其中。同时系统分配的空间会有一个地址,假设地址的编号为5000,如果我们现在输出这个值,我们可以通过两种途径来访问它,可以使用变量名a可以使用地址5000,其中由于地址也只是编号因此我们又可以把它赋值给变量。这样的保存内存地址的变量就被称为是“指针变量了“,好现在我们再来理一下关系,指针变量只是用来保存地址的变量,而地址则是另一个变量在内存中的储存位置。现在假如我们把a的地址赋给一个变量p,我们在这里假设p的地址是5200,那么我们就可以称p为a的指针变量了,同样我们可以通过p的值来访问a的值,我们也可以说变量p”指向“变量a,因为当我们运行程序时,指针的值都会发生变化,而我们所要注意和关心的是两个变量所具有的关系(这里的意思注意变量p和变量a的关系),后面我们要做的便是区别三个基本概念,指针便建立在这三个基本概念之上的,分别是:指针常量,指针值,指针变量,想要学好指针理解他们是必不可少的,我们把计算机的内存地址称为是指针常量,要注意我们不能修改它们,只能用来存储数据值,它就像已经刻好的房间号一样;同样我们不能直接保存地址的值,只能通过利用地址运算符(&),通过保存在地址中的变量来获得地址的值,可能刚接触指针的人对我刚刚说的话有一点蒙蔽,其实我以前也是一样,这样把我举一个小例子解释一下,可能你就恍然大悟了,我们在学习C语言时都接触过scanf函数吧,像这样scanf("%d",&a);这便是在告诉程序我要读取一个整形,放在变量a里面,问题来了我要怎么放到a里面呢?我们可以这样想当我们声明变量a时程序已经给我们分配一块储存空间,就相当于给我们了一个房间的门牌号意思是这个房间归你使用了,我们又怎样找到房间号呢?正如我们不能直接保存地址的值一样,我们要通过&来找到我们要用的房间,房间的使用者又是谁呢?很明显是a,我现在告诉程序&a使用者a的房间号(也就是a所用的地址)我要把读取的整形数据放到a的房间里,这样你们能理解了吧,是不是感觉突然懂了,好了我们回到上面我们利用地址运算符(&),通过保存在地址中的变量来获得地址的值,这样获得的值称为指针值。指针值(简单来说就是变量的地址)在程序每次运行时都会发生变化;一旦我们有了指针值,就可以把它存储在另一个变量中。包括指针的变量就称为指针变量。
我说如果你想学好指针,那么上面的东西你必须弄的十分清楚,在下面更新的内容中我将会提到关于C语言指针的一系列知识,希望你们能跟我一起学习。还有一句话送给你们:”基础不牢,地动山摇“。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值