指针C语言

指针肯定不陌生,指针很重要,各种各样的代码都会用到指针,接下来就来见识见识它到底是个啥。

指针

首先介绍两个定义:指针与指针变量

  1. 指针:就是保存地址的变量;
  2. 指针变量:变量的值是内存的地址,普通变量的值是实际的值,指针变量的值是具有实际值的变量的地址;

指针的两个运算符:&与*

  • &是一个取地址的运算符
  • *除了表示乘积运算之外,在指针里表示访问地址; * 是一个单目运算符,用来访问指针的值所表示的地址上的变量;

概念定义类的不是很好理解,其实简单来说可以这样记:
& 是取地址 * 是访问地址 ;&与*互相反作用

在这里插入图片描述

格式:

  • 输出地址(指针):printf(“%p,&变量名);或printf(”%p,指针);
  • 解读一段代码可能会更好理解
  • int* p = &i ;
  • *表示p是一个指针,它指向的是一个int,现在把i的地址交给了p;

注意:

  1. i是一个普通变量(普通变量的值是实际的值),p是一个指针变量(指针变量的值是具有实际值的变量的地址);
    所以&i表示取i的地址赋予了指针p;
  2. *p是读取p的地址所以就指向了i;即p=&i;*p=i;
    *p成了一个值;可以做左值或右值(叫左值、右值是因为*p表示的是一个数值,在=左为左值,在=右就是右值)

在这里插入图片描述
通过改变*p的值从而i的值也随之改变;这是因为p是指向i的地址,*p通过访问地址变成了此地址上的表达量

  • *&i<==>i;&i读取地址而*是访问地址,则*&就相当啥也没有改变

指针一开始有点不好理解,随着不断的打交道,自己写的代码慢慢会用到指针,不要慌张,理解以后就会好很多

const类型指针

const类型指针不常用,但还是介绍一下,要是没有理解指针的含义这部分可以不看的,影响不大,主要是如果遇到能看懂啥意思就行。

const类型指针有两种:

1. 指针是const
  • 指针是const:表示一旦得到某个变量的地址,不能指向其他变量 (指针不可修改)
  • int *const q = &i;//q是const
  • *q=26;//OK
  • q=&j;//ERROR
2. 所指是const
  • 所指是const:表示不能通过这个指针去修改那个变量 (通过指针不可修改)
  • const int *p = &i;//(*p)是const
  • *p=26;//ERROR
  • i=26;//OK
  • p=&j;//OK

OK是可执行,ERROR是不可执行

数组属于:指针是const

int a[ ] <==> int *const a

在这里插入图片描述

在这里插入图片描述

在一些循环里数组可以当做地址来用

在这里插入图片描述
将函数minmax中的数组 a[ ]改为指针 *a
在这里插入图片描述

数组 a[ ]改为指针 *a没有影响是 因为数组就是一种指针;
int a[ ] <= => int *a <= => int *const a

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值