指针的定义,初步应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1,变量a本质上代表一个储存单元。Cpu通过该储存单元的地址访问储存单元中的数据。
变量a本来就代表两个意思:存储单元的地址和存储单元中的数据。为了消除这种二义性,C语言规定a表示存储单元中的数据,&a表示存储单元的地址。A存储单元中的数据可以是一个普通数值,也可以是另一个存储单元的地址。比如a=&b就是将b的存储单元的地址存入a存储单元中。C语言规定*a代表a的存储单元的地址对应的存储单元的数据,也就是访问了*a就是访问b,于是*a提供了通过a访问b中的数据的手段。2,利用变量名,直接对变量进行操作叫直接访问,
3,将a+b的和送到被这个指针变量所指变量的那个空间中。我们已经知道了这个变量指向变量c,所以变量c的值就是a和b之和。
通过另一个变量的值来访问该变量的值称为间接访问。
变量的地址称为变量的指针。
C语言规定所有变量都要先说明再使用。
4,int* p int代表指针变量所指的类型。该指针变量只能指向整形变量。只能用表示地址的数据为指针初始化或赋值。(例如数组名,&变量名)。数组名代表了数组元素的起始地址。
还有一点就是相同类型的指针变量可以相互赋值。表示两个指针指向了同一个变量。
*px就是声明的时候指示px是一个指针。在定义处和下边*px代表的意思不一样。Px=3和*px=3.
不加星号就是把变量对应的地址改变了,加星号就是改变地址所对应的存储空间的内容了,也就是改变了指针指向变量的值。
4,一个指针只要被定义了,被赋值了,指针就可以用来引用被他所指的变量。
指针数组int *p3, int(*p)[3]
5,注意指针的概念辨析。
指针的值,就是指针所指的那块内存区域。
普通变量做函数的参数无法通过调用函数来完成数据的交换。
在被调用函数中形参也是指针。
这个图中指针的指向没有变化,但是指向的内容(值)变了。虽然调用完后地址被释放,但是内容没有被释放(找了个替死鬼。。。)。也就是说把实参的值给换了。
在非定义的部分出现*p。对指针做间接访问就意味着获得了指针所指变量的值。
实参指针,形参指针获得了同样的变量的地址,也就指向了相同的变量。
一旦指针被赋值了,我们对这个变量的引用被称为对变量的直接访问。
实际参数就是这个数是实际存在的。形式参数这个参数是没有的