指针和数组笔试题解析

news2024/9/23 9:31:51

目录

数组笔试题

一维数组

字符数组

题  一

题  二

题  三

题  四

题  五

题  六

二维数组  

指针笔试题

笔试题一

笔试题二 

笔试题三

笔试题四

笔试题五

笔试题六 

笔试题七 


本篇博文,将从指针和数组来为大家分析一些笔试题,设计内容多,全是干货,接下来让我们一起来看一下吧

数组笔试题

在做题之前,我们需要明白

数组名是数组首元素的地址
但是有2个例外:
1. sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节
2. &数组名,这里的数组名表示整个数组,取出的是整个数组的地址

一维数组

我们首先看题,答案再代码后面

int a[] = {1,2,3,4};
printf("%d\n",sizeof(a));//  16
printf("%d\n",sizeof(a+0));//  4/8
printf("%d\n",sizeof(*a));//  4
printf("%d\n",sizeof(a+1));//  4/8
printf("%d\n",sizeof(a[1]));//  4
printf("%d\n",sizeof(&a));//  4/8
printf("%d\n",sizeof(*&a));//  16
printf("%d\n",sizeof(&a+1));//  4/8 
printf("%d\n",sizeof(&a[0]));//  4/8
printf("%d\n",sizeof(&a[0]+1));//  4/8

接下来博主会为大家一句一句进行解释

printf("%d\n",sizeof(a));//  16

解释:sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小,所以是16

printf("%d\n",sizeof(a+0));//  4/8

解释:这里的sizeof没有和a直接相连,所以这里并不是整个数组,这里a代表数组首元素的地址,a+0依然是首元素的地址,既然是地址,所以大小为4或8,具体大小由编译器决定

printf("%d\n",sizeof(*a));//  4

解释:*a是数组的首元素,且为int型,所以大小为4

printf("%d\n",sizeof(a+1));//  4/8

解释:a为首元素的地址,a+1为第二个元素的地址,所以大小为4或8

printf("%d\n",sizeof(a[1]));//  4

解释:a[1]为第二个元素,大小为8

printf("%d\n",sizeof(&a));//  4/8

解释:&a为地址,所以大小为4或8

printf("%d\n",sizeof(*&a));//  16

解释:&a是a的地址,前面加上解引用*,则*&a就为a,所以大小为16

printf("%d\n",sizeof(&a+1));//  4/8

解释:&a是地址,那么&a+1也还是地址,所以大小为4或8

printf("%d\n",sizeof(&a[0]));//  4/8

解释:&a[0]是首元素地址,既然是地址,所以大小为4或8

printf("%d\n",sizeof(&a[0]+1));//  4/8

解释:&a[0]为地址,那么&a[0]+1也是地址,既然是地址,所以大小为4或8

字符数组

题  一

char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr));//  6
printf("%d\n", sizeof(arr+0));//  4/8
printf("%d\n", sizeof(*arr));//  1
printf("%d\n", sizeof(arr[1]));//  1
printf("%d\n", sizeof(&arr));//  4/8
printf("%d\n", sizeof(&arr+1));//  4/8
printf("%d\n", sizeof(&arr[0]+1));//  4/8

解释如下

printf("%d\n", sizeof(arr));//  6

解释:数组名单独放在sizeof内部,这里的arr表示整个数组,计算的是整个数组的大小,单位是字节,总共6个字节

printf("%d\n", sizeof(arr+0));//  4/8

解释:arr表示数组首元素的地址,arr+0还是数组首元素的地址,是地址就是4/8个字节

printf("%d\n", sizeof(*arr));//  1

解释:arr表示数组首元素的地址,*arr就是首元素,大小1个字节

printf("%d\n", sizeof(arr[1]));//  1

解释:arr[1]就是第二个元素,大小是1个字节

printf("%d\n", sizeof(&arr));

解释:&arr是数组的地址,但是数组的地址也是地址,是地址就是4/8

printf("%d\n", sizeof(&arr + 1));

解释:&arr + 1是跳过整个数组后的地址,是地址就是4/8个字节

printf("%d\n", sizeof(&arr[0] + 1));

解释:第二个元素的地址,是4/8个字节

题  二

char arr[] = { 'a','b','c','d','e','f' };
printf("%d\n", strlen(arr));//随机值
printf("%d\n", strlen(arr + 0));//arr 
printf("%d\n", strlen(*arr));//err
printf("%d\n", strlen(arr[1]));//err
printf("%d\n", strlen(&arr));//随机值
printf("%d\n", strlen(&arr + 1));//随机值
printf("%d\n", strlen(&arr[0] + 1));//随机值

在讲解提二是我们需要了解以下strlen这个函数

 格式为

还需要了解一下这个arr的存储

 

明白这些后,我们开始解释代码

printf("%d\n", strlen(arr));

解释:因为字符数组arr中没有\0,所以在求字符串长度的时候,会一直往后找,产生的结构就是随机值

printf("%d\n", strlen(arr + 0));

解释:arr + 0是首元素的地址,和第一个一样,也是随机值

printf("%d\n", strlen(*arr));//err,

解释: arr是数组首元素的地址,*arr就是数组首元素,就是'a'-97,strlen函数参数的部分需要传一个地址,当我们传递的是'a'时,'a'的ASCII码值是97,那就是将97作为地址传参,strlen就会从97这个地址开始统计字符串长度,这就非法访问内存了,如果访问就会出现下面的情况

printf("%d\n", strlen(arr[1]));//err

 解释:与上一条同理

printf("%d\n", strlen(&arr));//随机值

解释:&arr是数组的地址,数组的地址和数组首元素的地址,值是一样的,那么传递给strlen函数后,依然是从数组的第一个元素的位置开始往后统计直到/0结束

printf("%d\n", strlen(&arr + 1));//随机值

解释:与&arr类似,&arr+1是数组的地址加一,所以也是随机值

printf("%d\n", strlen(&arr[0] + 1));//随机值

解释:&arr[0] + 1是第二个元素的地址。结果也是随机值

题  三

char arr[] = "abcdef";//[a b c d e f \0]
printf("%d\n", sizeof(arr));//7
printf("%d\n", sizeof(arr + 0));//4/8
printf("%d\n", sizeof(*arr));//1
printf("%d\n", sizeof(arr[1]));//1
printf("%d\n", sizeof(&arr));//4/8
printf("%d\n", sizeof(&arr + 1));//4/8
printf("%d\n", sizeof(&arr[0] + 1));// 4/8

我们先看一下arr里面都有什么吧

解释如下

printf("%d\n", sizeof(arr));//7

解释:arr中存储了7个char型色元素,所以为7

printf("%d\n", sizeof(arr + 0));//  4/8

解释:arr + 0是首元素的地址,是地址,所以为4/8

printf("%d\n", sizeof(*arr));// 1

解释:*arr其实就是首元素,1个字节。等价关系:*arr--> *(arr+0) -- arr[0]

printf("%d\n", sizeof(arr[1]));// 1

解释:arr[1]是第二个元素,1个字节

printf("%d\n", sizeof(&arr));// 4/8

解释:&arr是数组的地址,是地址就是4/8个字节

printf("%d\n", sizeof(&arr + 1));// 4/8

解释:&arr + 1是跳过一个数组的地址,是地址,所以为4/8

printf("%d\n", sizeof(&arr[0] + 1));// 4/8

解释:&arr[0] + 1是第二个元素的地址,是地址,所以4/8

题  四

//	char arr[] = "abcdef";//[a b c d e f \0]
//	printf("%d\n", strlen(arr));//6
//	printf("%d\n", strlen(arr + 0));//6
//	printf("%d\n", strlen(*arr));//*arr为首元素,所以这里错误,err
//	printf("%d\n", strlen(arr[1]));//arr[1]为第二个元素,所以这里也错误
//	printf("%d\n", strlen(&arr));//6
//	printf("%d\n", strlen(&arr + 1));//随机值
//	printf("%d\n", strlen(&arr[0] + 1));//5

这题我就不一一解释了,各位宝子们结合下图与前面所讲.看懂本题是没有问题的

题  五

char *p = "abcdef";
printf("%d\n", sizeof(p));//  4/8
printf("%d\n", sizeof(p + 1));//  4/8
printf("%d\n", sizeof(*p));//  1
printf("%d\n", sizeof(p[0]));// 1个
printf("%d\n", sizeof(&p));// 4/8
printf("%d\n", sizeof(&p + 1));// 4/8
printf("%d\n", sizeof(&p[0] + 1));//  4/8

解释如下

printf("%d\n", sizeof(p));// 4/8

解释:p是一个指针变量,指针大小为4/8

printf("%d\n", sizeof(p + 1));//  4/8

解释:p+1是'b'的地址,是地址大小就是4/8个字节

printf("%d\n", sizeof(*p));//  1

解释:*p 就是'a',就是1个字节

printf("%d\n", sizeof(p[0]));// 1

解释:p[0]等价 *(p+0)等 价 *p ,所以1个字节

printf("%d\n", sizeof(&p));// 4/8
printf("%d\n", sizeof(&p + 1));// 4/8
printf("%d\n", sizeof(&p[0] + 1));//  4/8

解释:都为地址,所以大小都为4/8个字节

题  六

//	char* p = "abcdef";
//	printf("%d\n", strlen(p));//6
//	printf("%d\n", strlen(p + 1));//5
//	//printf("%d\n", strlen(*p));//err
//	//printf("%d\n", strlen(p[0]));//err
//	printf("%d\n", strlen(&p));//随机值
//	printf("%d\n", strlen(&p + 1));//随机值
//	printf("%d\n", strlen(&p[0] + 1));//5

这题我就不详细讲解了,请各位宝子们配合下图与前面所讲自行理解一下吧

二维数组  

int a[3][4] = {0};
printf("%d\n",sizeof(a));// 48
printf("%d\n",sizeof(a[0][0]));// 4
printf("%d\n",sizeof(a[0])); // 16
printf("%d\n",sizeof(a[0]+1));// 4/8
printf("%d\n",sizeof(*(a[0]+1)));// 4
printf("%d\n",sizeof(a+1));// 4/8
printf("%d\n",sizeof(*(a+1)));// 16
printf("%d\n",sizeof(&a[0]+1));// 4/8
printf("%d\n",sizeof(*(&a[0]+1)));// 16
printf("%d\n",sizeof(*a));// 16
printf("%d\n",sizeof(a[3]));// 16

在做题之前,务必知道下图中的知识点

二维数组可以看成存放着一维数组的数组 ,接下来我们看一下题解

printf("%d\n", sizeof(a));// 48

解释:3*4*4 = 48

printf("%d\n", sizeof(a[0][0]));//4

解释:首元素a[0][0]的大小

printf("%d\n", sizeof(a[0]));// 16

解释:a[0]是第一行这个一维数组的数组名,数组名算是单独放在sizeof内部了,计算的是整个数组的大小,大小是16个字节

printf("%d\n", sizeof(a[0] + 1));// 4/8

解释:a[0]作为第一行的数组名,没有单独放在sizeo内部,没有&。a[0]表示数组首元素的地址,也就是a[0][0]的地址。所以a[0]+1是第一行第二个元素的地址,是地址就是4/8个字节

printf("%d\n", sizeof(*(a[0] + 1)));//4

解释:计算的是就是第一行第2个元素的大小

printf("%d\n", sizeof(a + 1));// 4/8

解释:a是数组首元素的地址,是第一行的地址 int(*)[4]。a+1 就是第二行的地址 

printf("%d\n", sizeof(*(a + 1)));// 16

解释:*(a+1) --> a[1] -> sizeof(*(a+1))->sizeof(a[1]) 计算的是第二行的大小。a+1 --> 是第二行的地址,int(*)[4]。*(a+1) 访问的第二行的数组

printf("%d\n", sizeof(&a[0] + 1));// 4/8

解释:&a[0]是第一行的地址 int(*)[4],&a[0]+1 是第二行的地址 int(*)[4] 

printf("%d\n", sizeof(*(&a[0] + 1)));// 16 

解释:计算的是第二行的大小

printf("%d\n", sizeof(*a));// 16

解释:计算的是第一行的大小-16。a是数组首元素的地址,就是第一行的地址。*a 就是第一行,*a 等价于*(a+0) 等价于 a[0]

printf("%d\n", sizeof(a[3]));// 16

解释:a[3]等价于int [4],所以大小为16

指针笔试题

笔试题一

int main()
{
 int a[5] = { 1, 2, 3, 4, 5 };
 int *ptr = (int *)(&a + 1);
 printf( "%d,%d", *(a + 1), *(ptr - 1));
//结果为  2,5
 return 0;
}

解释图如下

笔试题二 

//这里告知结构体的大小是20个字节
struct Test
{
 int Num;
 char *pcName;
 short sDate;
 char cha[2];
 short sBa[4];
}*p;
//假设p 的值为0x100000。 如下表表达式的值分别为多少?
//已知,结构体Test类型的变量大小是20个字节
int main()
{
 printf("%p\n", p + 0x1);
 printf("%p\n", (unsigned long)p + 0x1);
 printf("%p\n", (unsigned int*)p + 0x1);
 return 0;
}

这里我们注意我们如果要运行这个代码,并得出题中所要求的结果,我们还需要对*p进行改造,如下

//struct Test
//{
//	int Num;
//	char* pcName;
//	short sDate;
//	char cha[2];
//	short sBa[4];
//}* p = (struct Test*)0x100000;

这样p就等于0x100000,就可以开始运行测试了,运行结果如下

  

这道题我们来一句一句解读一下 

 printf("%p\n", p + 0x1);

解释:p为指针变量,加0x1就就是加一,也就是跳过一个结构体(20个字节),所以结果为0x100014

 printf("%p\n", (unsigned long)p + 0x1);

解释:这里由于强制类型转换了为unsigned long型,所以这里的加0x1就是加1,所以结果为0x100001

printf("%p\n", (unsigned int*)p + 0x1);

解释:这里由于强制类型转换了为unsigned int*型,这里加一就只跳了一个整型的,所以加4,结果为0x100004

笔试题三

int main()
{
 int a[4] = { 1, 2, 3, 4 };
 int *ptr1 = (int *)(&a + 1);
 int *ptr2 = (int *)((int)a + 1);
 printf( "%x,%x", ptr1[-1], *ptr2);
 return 0;
}

首先我们得明白这个数组在内存中如何存储,如下图所示

 

 其次我们得知道&a,&a+1,int(a),int(a)+1,以及ptr[-1]与ptr的位置,如下图

 最后我们还得知道需要访问几个字节,因为打印用的%x,所以访问四个字节

所以最后结果为00000004和00000002

笔试题四

#include <stdio.h>
int main()
{
 int a[3][2] = { (0, 1), (2, 3), (4, 5) };
 int *p;
 p = a[0];
 printf( "%d", p[0]);
 return 0;
}

 这道题,需要我们注意的是,数组中的元素,(0,1)其实表示的是一个元素为1,这是一个逗号表达式,后面就可以依次类推,结果如下图所示

 则p[0]就等价于a[0][0],所以结果为1

笔试题五

int main()
{
 int a[5][5];
 int(*p)[4];
 p = a;
 printf( "%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
 return 0;
}

这里我借一位大牛的图来跟大家讲解一下

 则由图所知&p[4][2]-&a[4][2]的大小为-4,如果用%p打印的话,打印的就是-4的补码,转换如下

//	//10000000000000000000000000000100---原码
//	//11111111111111111111111111111011---反码
//	//1111 1111 1111 1111 1111 1111 1111 1100---补码
//	//F    F    F    F    F    F    F    C

所以结果为

笔试题六 

int main()
{
 int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 int *ptr1 = (int *)(&aa + 1);
 int *ptr2 = (int *)(*(aa + 1));
 printf( "%d,%d", *(ptr1 - 1), *(ptr2 - 1));
 return 0;
}

这道题配合下图,以及前面所学我就不进行讲解了

 结果为10,5

笔试题七 

#include <stdio.h>
int main()
{
 char *a[] = {"work","at","alibaba"};
 char**pa = a;
 pa++;
 printf("%s\n", *pa);
 return 0;
}

这道题我们得明白,a是一个指针数组,a里面每一个字符串都是一个指针

 那么这道题就简单了,

 则*pa就就是字符串"work"的地址,所以结果就为work

至此,指针进阶部分就讲解完了,有不对或者不懂的地方记得评论去留言或私信博主!!!

博主制作不易,记得三连。以便关注博主后续创作!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/732553.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA+SpringBoot+mybatis+SSM+layui+Mysql客户管理系统源码

IDEASpringBootmybatisSSMlayuiMysql客户管理系统 一、系统介绍1.环境配置 二、系统展示1. 管理员登录2.修改密码3.客户管理4.添加客户5.充值记录管理6.消费记录管理7.客户类型8.添加客户类型 三、部分代码UserMapper.javaLoginController.javaUser.java 四、其他获取源码 一、…

【ElasticSearch】ES案例:旅游酒店搜索

文章目录 一、项目分析二、需求1&#xff1a;酒店搜索功能三、需求2&#xff1a;添加过滤功能四、需求3&#xff1a;我附近的酒店五、需求4&#xff1a;置顶花广告费的酒店 一、项目分析 启动hotel-demo项目&#xff0c;访问localhost:servicePort&#xff0c;即可访问static下…

不停服迭代更新-服务网格

系列文章目录 本章将根据多年经验&#xff0c;进行规划讲解 文章目录 系列文章目录前言一、如何做到 不停服更新、 不停服更新的机制有什么好处&#xff0c; 前言 服务迭代发版、少不了的就是停服更新&#xff0c;为了不影响 用户体验&#xff0c;大部分公司选择半夜更新迭代&…

TPCE260PCIE转PMC载板

TPCE60是一个标准的高度PCI Express版本1.1兼容的模块&#xff0c;提供了一个槽用于安装标准PMC模块&#xff0c;灵活和成本有效的I/O解决方案的各种应用如过程控制、医疗系统、电信和交通控制。 桥接PCI Express x1连接到主机板和PCI总线信号的PMC槽之间是由透明的PCIe到PCI桥…

正确释放vector的内存:clear还是swap?

一、size()和capacity()方法的区别 1、vector有size()和capacity()方法都用来获取vector的大小&#xff0c;那么它们两之间有什么区别呢&#xff1f; 我们先来看一段代码&#xff1a; int main() {std::vector<int> v1;std::cout <<"size:"<< v…

工厂模式(工厂方法和简单工厂模式)

工厂模式 概述常见分类简单工厂模式概述设计图解创建People抽象类(产品说明书)创建子类(产品角色)创建工厂(用于根据需求实例化对象)消费者简单工厂模式优点简单工厂模式缺点 工厂方法模式概述设计图解创建抽象父类(产品说明书)子类&#xff08;产品角色&#xff09;工厂工厂接…

数据结构二叉树(OJ)题

分析&#xff1a; 2. 我们要想办法区分&#xff0c;从队列当中出队的数据是属于那一层的数据 3. 我们当前这一道题的时间复杂度是O&#xff08;h * N&#xff09; h是树的高度&#xff0c;我们最坏情况就是在树的最底下找到&#xff0c;得递归h次&#xff0c;树的高度&#x…

vue开发:vue的插槽功能讲解

vue的插槽 举一个生活中的例子&#xff1a;比如装修房子的时候我们会在很多地方预留出一些插孔&#xff0c;可能要插电冰箱&#xff0c;插电式&#xff0c;插充电器等&#xff0c;反正就是你觉得预留在这个位置的插座一定有用&#xff0c;这个预留的插座就类似我们今天要说的插…

【C语言13】结构体的声明,定义与结构体的内存对齐

文章目录 一、结构体1.1结构体是什么1.2结构体声明1.3结构体的内存 以上便是结构体的介绍&#xff0c;如有不足&#xff0c;请多多指正&#xff01; 一、结构体 1.1结构体是什么 通俗的说&#xff0c;结构体就是一个类的集合&#xff0c;如同整形数组是整形数字的集合体&…

高数中的驻点以及要注意的事项

在高等数学中&#xff0c;驻点是指函数导数为零的点&#xff0c;即函数的极值点或拐点。在求解函数的最大值、最小值或拐点时&#xff0c;需要找到函数的驻点。 要注意以下几点&#xff1a; 1. 导数为零不一定是驻点&#xff1a;虽然驻点定义为函数导数为零的点&#xff0c;但…

力扣 | 双指针技巧

前文回顾&#xff1a;力扣 | 数组和字符串简介 力扣LeetBook&#xff1a;数组和字符串 文章目录 &#x1f4da;双指针技巧&#xff1a;情形一&#x1f449;反转字符串&#x1f449;数组拆分I&#x1f449;两数之和 II - 输入有序数组 &#x1f4da;双指针技巧&#xff1a;情形二…

基于智能手机的医院服务客户端设计与实现(论文+源码)_kaic

摘 要 近年来&#xff0c;随着中国经济的迅猛发展&#xff0c;医疗技术水平也在不断提高&#xff0c;但由于人口数目巨大&#xff0c;导致医疗资源人均分配不足的情况依旧十分严峻。预约挂号一直是制约医疗机构服务质量提高的主要环节之一。在传统预约挂号方式下&#xff0c;繁…

EMQ X(3):客户端websocket消息收发

在EMQ X Broker提供的 Dashboard 中 TOOLS 导航下的 Websocket 页面提供了一个简易但有效的WebSocket 客户端工具&#xff0c;它包含了连接、订阅和发布功能&#xff0c;同时还能查看自己发送和接收的报文数据&#xff0c;我们期望 它可以帮助您快速地完成某些场景或功能的测试…

ncm格式如何转换为mp3,分享几个方法!

你是否曾在网易云音乐上下载了一些NCM格式的音频文件&#xff0c;但发现无法在其他设备上播放&#xff1f;别担心&#xff0c;记灵在线工具可以帮助你将这些NCM格式转换为常见的MP3格式。今天小编就来分享三种方法&#xff0c;教你如何搞定&#xff01; 方法一&#xff1a;曲线…

C#学习之路-循环

有的时候&#xff0c;可能需要多次执行同一块代码。一般情况下&#xff0c;语句是顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了允许更为复杂的执行路径的多种控制结构。 循环语句允许我们多次执行一个…

Notepad++设置查看函数列表的快捷键

Notepad是一个非常精巧、启动便捷、支持文本自动补全的记事本软件&#xff0c;到2023年7月&#xff0c;已经更新到了v8.5.4版本&#xff0c;这里介绍设置其查看函数列表的快捷键方法。老版本的Notepad&#xff0c;比如Notepad v7.3, 默认查看函数列表的快捷键的为F8&#xff0c…

python PYQT5 键盘,鼠标,绘制,焦点,改变,输入法,事件的方法和使用例子

https://img-blog.csdnimg.cn/7630017d3ee444eab9bdedf8d48d575f.png from PyQt5.Qt import * import sys class MyQwidget(QWidget):def __init__(self):super().__init__()def showEvent(self, a0) -> None:print("窗口被展示出来",a0)def closeEvent(self,a0) …

网络编程4——传输层TCP协议的三大安全机制:三次握手四次挥手+确认应答机制+超时重传机制

文章目录 前言一、TCP协议段与机制TCP协议的特点TCP报头结构TCP协议的机制与特性 二、TCP协议的 连接管理机制 TCP建立连接&#xff1a;三次握手 TCP断开连接&#xff1a;四次挥手 三、TCP协议的 确认应答机制 四、TCP协议的 超时重传机制 总结 前言 本人是一个刚刚上路的I…

快速入门QT大法

QT大法 个人博客地址&#xff1a;https://zjxweb.github.io/#/ 1. 入门介绍 1.1 版本控制工具 svn vss git 1.2 QT 优点 跨平台接口接单&#xff0c;容易上手一定程度上简化了内存回收 2. 创建第一个QT程序 2.1 流程 点击创建项目后&#xff0c;选择项目路径以及给项目…

计算机体系结构基础知识介绍之指令集并行的基本编译器技术(循环展开、基本管道调度)

一、基本管道调度和循环展开 为了保持管道满载&#xff0c;必须通过查找可以在管道中重叠的不相关指令序列来利用指令之间的并行性。 为了避免流水线停顿&#xff0c;相关指令的执行必须与源指令分开一定的时钟周期距离&#xff0c;该距离等于该源指令的流水线延迟。 编译器执…