关于指针的入门
创始人
2025-05-31 05:56:03
0次

目录

部分操作符优先级

 指针中的取地址&和解引用* 

指针运算、数组和指针的关系

附加:如何用函数交换数据的值?


部分操作符优先级

先上一张图,了解指针中的*的优先级

*(解引用操作)处于第二优先级

理解指针:

1. 指针是内存中一个最小单元的编号,也就是地址
2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量

3.指针是一种特殊的变量类型,它指向内存中的一块地址

 

 先来看一些指针相关的变量的简单类型(函数指针以及二级指针目前暂不涉及)


 指针中的取地址&和解引用* 

数据在内存中以二进制形式存入一块空间中,&操作是将这块空间的地址取出来。

而指针指向的就是一块地址,所以将这块空间的地址存入指针中

我们再讨论一下:指针的类型
我们都知道,变量有不同的类型,整形,浮点型等。那指针有没有类型呢?
准确来说:是有的。
当有这样的代码:

int a =10;

pa = &a; 
要将&a(a的地址)保存到pa中,我们知道pa就是一个指针变量,那它的类型是怎样的呢?

答案是int *


这里可以看到,指针的定义方式是: type + * 。

比如:

char * ch = NULL;

float * pf  = NULL;
其实:
char* 类型的指针是为了存放 char 类型变量的地址。
float* 类型的指针是为了存放 float 类型变量的地址。
int* 类型的指针是为了存放 int 类型变量的地址。
 


指针运算、数组和指针的关系

 一、指针+-整数

指针加减整数就是对地址进行操作,把指向的地址往后移动。

这里可以把指针比作“箭头”来理解

图示:>

定义int p =10;此时在内存中开辟了一块空间存放p

pa是指向p的指针,所以pa指向p的地址

 如果让pa++呢?

则往后移动一格。

但是,一格有多大呢?

答:取决于你的数据类型

数据类型
char 字符数据类型1字节
short  2字节
int  4字节
long  4字节
long long  8字节
float 占4字节
double 占8字节

图示:>

 解析:

一般情况下:数组名是数组首元素的地址(数组名就是一个指针)

两种特殊情况:sizeof(数组名)和&数组名(本文后面再说)

pa指向arr首地址(也就是数组中的第一个元素1)

由图中左下角可以看出pb和pa间相差4,为什么呢?

因为int类型占四个字节,往后移动一次,地址值就加4。

c1指向str的首地址(也就是dog的第一个字符'd')

c2指向第2个字符'o'

为什么c1和c2只差1呢?

因为char类型占一个字节,往后移动一次,地址值加1。

 数组和指针可以相互表示:

int arr[3] = {1,2,3};

int *pa = arr;

那么*(pa+i)和arr[i]就是等价的

附加:如何用函数交换数据的值?

指针指向地址,到底什么意思?

 此时你发现并没有交换成功,为什么?

我们进入监视窗口看一看:>

由下图可知:

x和y确实交换成功了,但是a和b并没有进行交换。

因为在swap函数中,我们只是把a和b的值赋给了x和y,然后让x和y进行交换。

那么,如何让a和b交换呢?用指针!!

 交换a和b值,只需要把a和b的地址传过去,交换a和b的地址。

解析:>

由于传入的是x和y的地址,所以函数中用int *类型的x和y接收

如何进行交换即可。

 

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...