指针——初识C语言

一.指针的概念:

变量在储存时,内存被分为一块一块的,每一块都有一个特有的编号,而这个编号可以暂时理解为指针,就像酒店的门牌号一样。

.

    1.此时可理解为10住进了门牌号(地址)为 pa 的一个房间,可以通过门牌号  pa 找到房间,住进 a 房间中,这里的门牌号 pa 便可理解为指针。

.

.

.

二.指针变量和指针的类型

    1.指针变量就是一个变量,它储存的内容是一个指针。用前面的例子,皆可以将指针变量理解为一张房卡,房卡储存量房间号的信息。

    2.在我们定义一个变量时,要确定它的类型(int,float,char...),在定义指针变量时也是一样的,必须确定指针类型。就像你只能用酒店A的房卡储存酒店A房间号的信息一样

.

.

.

三.指针变量的使用

    1.指针变量的定义形式:数据类型 *指针名

     2.由下图可知:p就是指针变量,亦可以说明*p中储存的是a中的值,变量p中储存的是 a的地址

     3.要用%p,打印出a的地址

     4.变量类型亦可是char ch = 'w'  ; char * pc = &ch

.

.

.

三.取地址运算符(&)和指针运算符(*)的使用  

    1.指针运算符*(间接寻址符):与&为逆运算,作用是通过操作对象的地址,获取存储的内容,并可修改存储的内容。*解引用操作符,意思就是通p中存放的地址,找到p所指向的对象,*p就是p所指向的对象。例如,x = &i,x为i的地址,*x则为通过i的地址,获取i的内容

    2.取地址运算符&:单目运算符&是用来取操作对象的地址。例如,&i为取变量i的地址,用%p输出。对于常量表达式,寄存器变量不能取地址(因为他们储存在储存器中,没有地址)

    3.指针变量和其他变量一样,在定义时可以赋值,即初始化。也可以也可以赋值“NULL”或“0”,如果赋值“0”,此时的“0”含义并不是数字“0”,而是NULL的字符码值

     4.“&”和“*”的结合方向:“&”和“*”都是右结合的。假设有变量x = 10,则 *&x 的含义是,先获取变量 x 的地址,再获取地址中的内容。因为“&”和“*”互为逆运算,所以可得到x = *&x

     5.练习:输入x,y两个整数,其中较大的值赋给x

.

.

.

四.不同类型的指针所占用的内存大小

    1.不管什么类型的指针,都是在创建指针变量

    2.指针变量是用来存放地址

    3.指针变量的大小取决于一个地址存放的时候需要多大空间

    4.//32位机器上的地址:32bit位-4byte,所以指针变量的大小是4个字节

    5.//64位机器上的地址:64bit位-8byte,所以指针变量的大小是8个字节

.

.

.

五.指针运算

    1.赋值运算可以相互赋值,也可以赋值某个变量的地址,或者赋值一个具体的地址

    2.指针与整数的加减运算

        (1)指针变量的自增自减运算,指针加一或减一运算,表示指针向前或向后移动一个单元(不同类型的指针,单元长度不同)

        (2)指针变量加上或减去一个整型数,和第一条类似,具体加几就是像前移动几个单元,减几就是向后移动几个单元

(。。。。。。剩余内容以后深入了解)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

qsl&F

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

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

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

打赏作者

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

抵扣说明:

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

余额充值