了解C语言的指针

一. 前言

C语言是比较偏底层的语言,为什么他比较偏底层,就是因为他的很多操作都是直接针对内存操作的。

这篇我们就来讲解C语言的一大特点,也是难点,指针和指针操作。

二. 指针类型(int *)的存储过程和原理

3.1 指针类型的赋值规范

(1) 第一种先定义后赋值

结果:p = 6618636

变量p存放的a的地址

重点:

先了解,指针类型,int *p,虽然是*p在一起写着,但是变量名叫p,类型为int *,也就是整型的指针类型,当你理清变量名和类型之后,你对指针的理解程度已经懂了大半了 。

(2)第二种定义赋值一步完成

结果:r = 6618636存放的是a的地址

还有一种常用的错误赋值方法:

错误的操作,不能把一个具体的数字赋给指针(类型不匹配),

一个指针类型,一个int类型

3.2 指针存储过程和原理

前面列举了两种常用的指针的赋值,下来具体讲解计算机都干了什么?

  • 可以把存放一个int类型变量的地址赋给一个int *指针类型的变量
  • '='左边是一个int *指针类型的变量 ,可以存放放置着int类型数值的地址
  • '='右边是&a,a是int类型的变量数值5,&是取地址符,&a就是拿到int类型a的数值的地址

总的来说,就是把a的那片空间,给了p一个钥匙,让p也可以对a的那片空间操作,这个已经属于指针操作了,后面我们会讲到。

由上述可以证明,c语言的赋值,必须是类型对应

总结:int *p; 变量名叫p,类型为int *,可存放一个int数据的地址 。

注意:这块的可存放一个int数据的地址,不是存放一个地址,是int类型

例如:

  • 这里a是一个int类型的变量,存放的int类型的数值5

&a 取到了存放int类型a的地址

p = &a; 把int类型a的地址赋给了int *类型的p

即就是int *类型的变量可存放一个int数据的地址

三. 指针类型(int **)的存储过程和原理

结果:q = 6618624存放的p的地址

int *p明白了,那么int **q呢?

首先: 先对数据类型和变量划分开

int **q; 变量名为q,数据类型为int **

int *中存放的是int类型数据的地址

int **中存放的是int类型数据的地址的地址

上述我们明白了,一个*是指一个int数值的地址,

p中存放的是个int数值的地址,p = 6618636,为a的地址。

那么我们可以推到,两个*q就是存放p的地址。

p存放a的地址,p本身也是一个变量,他的值为a的地址 ,

而内存也给他自己开辟了一片空间,让他存放而他的数值

q存放p的地址,q也是一个变量,

他们的指向关系如下 :

a<----p<----q

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值