【C语言】指针初入(一)!

本文深入讲解C语言中的指针概念,包括指针的基本定义、作用、变量定义与赋值、动态存储单元的开辟与管理、指针运算符的使用及实例演示。适合初学者和进阶者理解并掌握指针的运用。

一、指针?啥玩意?

指针嘛?这玩意,还真挺难!每次编程序遇到指针时……

在这里插入图片描述

1.指针的基本概念

(1)概念

指针,是C语言的一种派生类型,指针变量存储的值是某**内存地址

(2)作用

①使用指针可以更加灵活地组织具有复杂关系的数据,简化操作过程,提高程序的运行效率。
①可以通过其存储地址间接存取变量中的数据

2.指针变量的定义

【语法格式】:类型标识符 * 标识符
例如:

int *p;

3.指针变量的赋值

(1)指针变量如何赋值?

通过地址符 &

int *p;//定义指针变量
p=&a; //把变量 a 的地址赋给指针变量 p,表示指针 p 指向变量 a

(2)指针变量如何初始化?

float a,*p=&a;
或者
float a;
float *p=&a;  //指针 p 与变量 a 的类型必须一致

(3)通过其他指针变量赋值

int i;
int *p1=&i,*p2;
p2=p1;

(4)给指针变量赋空值

p=NULL;
//当指针被赋值为NULL时,指针不指向任何数据。

4.开辟动态存储单元

(1)new运算符

【语法格式】new 类型名
【语法格式】new 类型名[元素个数]

(2)delete运算符

【语法格式】delete 变量名
【语法格式】delete []变量名

(3)实例

int i=7,*p;
double *q;
p=new int[i+3]; //在内存中分配10个int类型的连续存储单元块
q=new double; //在内存中分配一个double类型存储单元块
……
delete q;  //释放double单元块
delete []p; //释放10个int类型连续存储单元块

5.指针运算符

(1)给p赋初值

int i=123,j,*p;
p=&i;

(2)怎么通过指针取 i 的值,将其赋给 j ?

j=*p; //指针间接赋值,*p等价于变量i
j=*&i; //直接赋值,*&i等价于变量i
// * 和 & 都是单目运算符,具有相同的优先级,结合方向自右向左

(3)再来一块代码

p=&i;
printf("%d\n",*p);
j=(*p)++; //括号不能省略
// * 和 ++ 均为单目运算符,结合方向自右向左,因此*p++ <=> *(p++)

(4)指针变量的值可以改变

int i=1,j=2,*p;
p=&i;
*p+=100;
p=&j;
(*p)--;
// *p 方式存取变量值是间接的,比直接存取一个变量更加费时。

通过改变指针的指向,增加程序设计的灵活性,使代码更加简洁、高效。

(5)等价语句

*p <=> i <=> *&i
&*p <=> &i <=> p

(6)实例

int *p;
p=new int; //开辟一块动态存储区,把其首地址赋值给p
*p=789;
//指针运算符“ * ”是单目运算符,乘法运算符“ * ” 是双目运算符

(未完待续……)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叶叶扁舟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值