面试题详解

news2024/9/29 11:27:37

前言:这一期我们专门来巩固所学知识,同时见识一些面试题。对知识做出一个总结。

1 不创建临时变量交换两个整数

. 第一种方法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前a=%d,b=%d\n", a, b);
	a = a + b;//此时a存放的不再是原来的值,而是a与b的和,意味着a的值已经被改掉了
	b = a - b;//b依然是原来的值,此时a-b相当于a+b-b就应该等于原来a的值
	a = a - b;//此时b存放的是原来a的值,a依然等于a+b的和,所以a-b就相当于a+b-a就应该等于原来b的值
	printf("交换后a=%d,b=%d", a, b);
	return 0;
}

. 第二种方法

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	printf("交换前a=%d,b=%d\n", a, b);
	a = a ^ b;//此时a存放的是a^b的值,a的值已经被改掉了
	b = a ^ b;//b存放的依然是原来的值,那么a^b就相当于a^b^b就等于原来a的值
	a = a ^ b;//此时b存放的是原来a的值,a^b就相当于a^b^a就等于原来b的值
	printf("交换后a=%d,b=%d\n", a, b);
	return 0;
}

这里就需要大家去自行回顾按位异或的知识了。

2 数组笔试题

. 整型数组

#include<stdio.h>
int main()
{
	//整型数组,数组大小为4,每一个元素类型都是int类型
	int a[] = { 1,2,3,4 };
	printf("%zd\n", sizeof(a));// 16
	//sizeof(a)求的是整个数组的大小,单位是字节
	printf("%zd\n", sizeof(a + 0));// 4/8
	//a作为数组名,代表首元素的地址,a+0跳过0个整型,依然指向数组首元素的地址,地址的大小与平台的大小有关
	printf("%zd\n", sizeof(*a));// 4
	//a数组名,代表数组首元素的地址,*a对a进行解引用,指向数组首元素(整型)
	printf("%zd\n", sizeof(a + 1));// 4/8
	//a数组名,代表数组首元素的地址,a+1跳过1个整型,指向下一个元素的地址,地址的大小与平台有关
	printf("%zd\n", sizeof(a[1]));// 4
	//[]下标引用操作符,a[1]访问的是下标为1的元素(整型)
	printf("%zd\n", sizeof(&a));// 4/8
	//&a取出的是整个数组的地址,地址的大小与平台有关
	printf("%zd\n", sizeof(*&a));// 16
	//*&a相当于a,sizeof(a)求的是整个数组的大小,单位是字节
	printf("%zd\n", sizeof(&a + 1));// 4/8
	//&a+1跳过整个数组,指向下一段空间的地址
	printf("%zd\n", sizeof(&a[0]));// 4/8
	//a[0]访问的是下标为0的元素,&a[0]取出的是下标为0元素的地址
	printf("%zd\n", sizeof(&a[0] + 1));// 4/8
	//&a[0]+1跳过1个整型,指向下标为1元素的地址
	return 0;
}

. 字符数组

sizeof

#include<stdio.h>
int main()
{
	//字符数组arr里是没有\0的
	char arr[] = { 'a','b','c','d','e','f' };
	printf("%zd\n", sizeof(arr));//6
	//sizeof(arr)求的是整个数组的大小,单位是字节
	printf("%zd\n", sizeof(arr + 0));//4/8
	//arr数组名,代表数组首字符的地址,arr+0依然代表数组首字符的地址,地址大小与平台有关
	printf("%zd\n", sizeof(*arr));//1
	//*arr相当于数组首字符a,是一个字符型
	printf("%zd\n", sizeof(arr[1]));//1
	//arr[1]访问的是数组下标为1的元素,b是一个字符型
	printf("%zd\n", sizeof(&arr));//4/8
	//&arr取出的是整个数组的地址,地址的大小与平台有关
	printf("%zd\n", sizeof(&arr + 1));//4/8
	//&arr+1跳过整个数组,指向下一段空间的地址
	printf("%zd\n", sizeof(&arr[0] + 1));//4/8
	//arr[0]访问的是数组下标为0的元素,&arr[0]取出的是数组下标为0元素的地址,&arr[0]+1跳过一个字符型,指向下标为1元素的地址
	return 0;
}

strlen

#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = { 'a','b','c','d','e','f' };
	printf("%zd\n", strlen(arr));//随机值
	//arr数组名,代表数组首字符的地址,strlen(arr)是从数组首字符的地址开始向后找\0,统计\0之前字符的个数
	printf("%zd\n", strlen(arr + 0));//随机值
	//arr数组名,代表数组首字符的地址,arr+0依然代表数组首字符的地址
	printf("%zd\n", strlen(*arr));//err
	//*arr代表数组首字符a,是一个字符型,而strlen函数的参数需要一个地址
	printf("%zd\n", strlen(arr[1]));//err
	//arr[1]访问的是数组下标为1的元素,是一个字符型
	printf("%zd\n", strlen(&arr));//随机值
	//&arr取出的是整个数组的地址,数组的地址依然是从数组首字符的地址开始访问
	printf("%zd\n", strlen(&arr + 1));//随机值-6
	//&arr+1跳过整个数组,指向下一段空间的地址
	printf("%zd\n", strlen(&arr[0] + 1));//随机值-1
	//&arr[0]取出的是数组首字符的地址,&arr[0]+1跳过一个字符型,指向数组下标为1元素的地址
	return 0;
}
#include<stdio.h>
int main()
{
	char arr[] = "abcdef";
	printf("%zd\n", sizeof(arr));//7
	//sizeof(arr)求的是数组的大小,单位是字节
	printf("%zd\n", sizeof(arr + 0));//4/8
	//arr数组名,代表数组首字符的地址,arr+0依然代表数组首字符的地址,地址的大小与平台有关
	printf("%zd\n", sizeof(*arr));//1
	//*arr代表数组首字符a,是一个字符型
	printf("%zd\n", sizeof(arr[1]));//1
	//arr[1]访问的是数组下标为1的元素,是一个字符型
	printf("%zd\n", sizeof(&arr));//4/8
	//&arr取出的整个数组的地址
	printf("%zd\n", sizeof(&arr + 1));//4/8
	//&arr+1跳过整个数组,指向下一段空间的地址
	printf("%zd\n", sizeof(&arr[0] + 1));//4/8
	//&arr[0]取出的是数组首字符的地址,&arr[0]+1跳过一个字符型,指向数组下标为1元素的地址
	return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
	char arr[] = "abcdef";
	printf("%zd\n", strlen(arr));//6
	//arr数组名,代表数组首字符的地址,从这个位置开始向后找\0,统计\0之前字符的个数
	printf("%zd\n", strlen(arr + 0));//6
	//arr+0跳过0个字符型,指向数组首字符的地址
	printf("%zd\n", strlen(*arr));//err
	//*arr代表数组首字符,而strlen函数的参数需要一个地址
	printf("%zd\n", strlen(arr[1]));//err
	//arr[1]访问的是数组下标为1的元素,是一个字符型
	printf("%zd\n", strlen(&arr));//6
	//&arr取出的是整个数组的地址,数组的地址也是从数组首元素的地址开始向后访问
	printf("%zd\n", strlen(&arr + 1));//随机值
	//&arr+1跳过整个数组,指向下一段空间的地址
	printf("%zd\n", strlen(&arr[0] + 1));//5
	//&arr[0]取出的是数组首字符的地址,&arr[0]+1跳过一个字符型,指向下一个字符的地址
	return 0;
}
#include<stdio.h>
int main()
{
	char* p = "abcdef";//常量字符串,字符指针p存放的是字符串首字符a的地址
	printf("%zd\n", sizeof(p));//4/8
	//sizeof(p)求的是指针的大小,指针就是地址,与平台的大小有关
	printf("%zd\n", sizeof(p + 1));//4/8
	//p+1跳过一个字节,指向了字符串中b的地址
	printf("%zd\n", sizeof(*p));//1
	//*p就相当于a,是一个字符型
	printf("%zd\n", sizeof(p[0]));//1
	//p[0]就相当于*(p+0),访问的是字符串中的a,是一个字符型
	printf("%zd\n", sizeof(&p));//4/8
	//&p取出的是一级指针变量p的地址
	printf("%zd\n", sizeof(&p + 1));//4/8
	//&p+1跳过一个指针的大小,指向一段未知空间的地址
	printf("%zd\n", sizeof(&p[0] + 1));//4/8
	//&p[0]+1跳过一个字符型,指向下一个字符的地址
	return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
	char* p = "abcdef";
	printf("%zd\n", strlen(p));//6
	//p存放的是a的地址,strlen从这个位置开始向后统计\0之前字符的个数
	printf("%zd\n", strlen(p + 1));//5
	//p+1跳过一个字节,指向字符串中b的地址
	//printf("%zd\n", strlen(*p));//err
	//*p就相当于a,strlen函数的参数需要一个地址
	//printf("%zd\n", strlen(p[0]));//err
	//p[0]访问的是字符串中首字符a,是一个字符型
	printf("%zd\n", strlen(&p));//随机值
	//&p取出的是一级指针变量p的地址
	printf("%zd\n", strlen(&p + 1));//随机值
	//&p+1指向一段未知空间的地址
	printf("%zd\n", strlen(&p[0] + 1));//5
	//&p[0]+1跳过一个字符型,指向下一个字符的地址
	return 0;
}

. 二维数组

#include<stdio.h>
int main()
{
	int a[3][4] = { 0 };
	//二维数组,每一个元素的类型都是int
	printf("%zd\n", sizeof(a));//48
	//sizeof(a)求的是整个数组的大小,单位是字节
	printf("%zd\n", sizeof(a[0][0]));//4
	//a[0][0]访问的是数组首元素,是一个整型
	printf("%zd\n", sizeof(a[0]));//16
	//a[0]相当于二维数组第0行的数组名,sizeof(数组名)求的是整个数组的大小,单位是字节
	printf("%zd\n", sizeof(a[0] + 1));//4/8
	//a[0]代表二维数组第0行的数组名,数组名代表数组首元素的地址,a[0]+1跳过一个整型,,指向下一个元素的地址
	printf("%zd\n", sizeof(*(a[0] + 1)));//4
	//*(a[0]+1)代表的是元素,是一个整型
	printf("%zd\n", sizeof(a + 1));//4/8
	//a数组名,代表数组首元素的地址,二维数组的首元素是第0行,a+1就代表第一行的地址
	printf("%zd\n", sizeof(*(a + 1)));//16
	//*(a+1)相当于第一行的数组名,sizeof(数组名)求的是第1行数组的大小,单位是字节
	printf("%zd\n", sizeof(&a[0] + 1));//4/8
	//&a[0]取出的是第0行数组的地址,&a[0]+1跳过第0行,指向下一行的地址
	printf("%zd\n", sizeof(*(&a[0] + 1)));//16
	//*(&a[0]+1)相当于第一行的数组名,sizeof(数组名)求的是第1行数组的大小,单位是字节
	printf("%zd\n", sizeof(*a));//16
	//a数组名,代表二维数组第0行的地址,*a相当于第0行的数组名,sizeof(数组名)求的是第0行数组的大小
	printf("%zd\n", sizeof(a[3]));//16
	//a[3]相当于二维数组第2行的数组名,sizeof(数组名),求的是二维数组第2行数组的大小
	return 0;
}

3 指针笔试题

#include<stdio.h>
int main()
{
	int a[5] = { 1, 2, 3, 4, 5 };
	int* ptr = (int*)(&a + 1);
	//&a取出的整个数组的地址,&a+1跳过整个数组,指向下一段空间的地址
	//ptr是一个整型指针,ptr指向的对象是一个整型
	printf("%d,%d", *(a + 1), *(ptr - 1));//2  ,  5
	//a是数组名,代表数组首元素的地址,a+1跳过一个整型,指向下标为1元素的地址,*(a+1)访问的是数组下标为1 的元素
	//ptr-1向后跳过4个字节,指向下标为4元素的地址,*(ptr-1)访问的是数组下标为4的元素
	return 0;
}

画图分析

在这里插入图片描述


#include <stdio.h>
int main()
{
	int a[3][2] = { (0, 1), (2, 3), (4, 5) };
	//逗号表达式,最后一个表达式的结果就是最后的结果
	//int a[3][2]={1,3,5};二维数组
	int* p;
	p = a[0];
	//a[0]代表二维数组第0行的数组名,数组名代表数组首元素的地址
	//a[0]就代表二维数组第0行数组的首元素的地址
	printf("%d", p[0]);//1
	//p[0]=*(p+0),p+0跳过0个整型,依然指向二维数组第0行数组首元素的地址
	return 0;
}
//假设环境是x86环境,程序输出的结果是啥?
#include <stdio.h>
int main()
{
	int a[5][5] = { {1,2},{2,3},{3,4},{4,5},{5,6} };
	int(*p)[4];
	//数组指针,p指向的数组大小为4
	p = a;
	//a数组名,代表二维数组第0行数组的地址
	printf("%p,%d\n", &p[4][2] - &a[4][2], &p[4][2] - &a[4][2]);
	//指针-指针的绝对值代表指针之间元素的个数
	//&p[4][2]-&a[4][2]=-4
	//10000000000000000000000000000100---原码
	//11111111111111111111111111111011---反码
	//11111111111111111111111111111100---补码
	//FF  FF  FF  FC
	return 0;
}

画图分析

在这里插入图片描述


#include <stdio.h>
int main()
{
	int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
	int* ptr1 = (int*)(&aa + 1);
	//&aa取出的是整个数组的地址,&aa+1跳过整个数组,指向下一段空间的地址
	//ptr1是一个整型指针
	int* ptr2 = (int*)(*(aa + 1));
	//aa数组名,代表二维数组首元素的地址,也就是二维数组第0行的地址
	//aa+1跳过第0行,指向第1行的地址
	//*(aa+1)相当于二维数组第1行的数组名,数组名代表首元素的地址
	//ptr2也是一个整型指针
	printf("%d,%d", *(ptr1 - 1), *(ptr2 - 1));
	return 0;
}

画图分析

在这里插入图片描述


#include <stdio.h>
int main()
{
	char* a[] = { "work","at","alibaba" };
	//pa是一个二级指针
	char** pa = a;
	//a数组名,代表数组首元素的地址
	pa++;
	printf("%s\n", *pa);//at
	return 0;
}

画图分析

在这里插入图片描述


#include <stdio.h>
int main()
{
	char* c[] = { "ENTER","NEW","POINT","FIRST" };
	char** cp[] = { c + 3,c + 2,c + 1,c };
	//cpp是一个三级指针
	char*** cpp = cp;
	printf("%s\n", **++cpp);//POINT
	//++cpp,cpp指向cp数组下标为1的元素c+2,c+2指向c数组下标为2的元素
	printf("%s\n", *-- * ++cpp + 3);//ER
	printf("%s\n", *cpp[-2] + 3);//ST
	//cpp[-2]=*(cpp-2)
	printf("%s\n", cpp[-1][-1] + 1);//EW
	//cpp[-1][-1]=*(*(cpp-1)-1)
	return 0;
}

画图分析

在这里插入图片描述


#include<stdio.h>
//在X86环境下
//假设结构体的⼤⼩是20个字节
//程序输出的结构是啥?
struct Test
{
	int Num;
	char* pcName;
	short sDate;
	char cha[2];
	short sBa[4];
}*p = (struct Test*)0x100000;
int main()
{
	//0x表示16进制数字
	printf("%p\n", p + 0x1);//0x100014
	//p是一个结构体指针,p+1就跳过一个结构体的大小(20个字节)
	printf("%p\n", (unsigned long)p + 0x1);//0x100001
	//p是一个unsigned long int,p+1执行的是整数加法,不存在跳过几个字节
	printf("%p\n", (unsigned int*)p + 0x1);//0x100004
	//p是一个unsigned int*的指针,p+1跳过一个unsigned int的大小(4个字节)
	return 0;
}

结语:今天的内容到此告一段落。制作不易,若各位有所收获,就为小编点点赞吧。

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

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

相关文章

中央空调安装8个标准流程指南

1、内机安装施工队进场第一步就是吊装内机&#xff0c;这里只要注意2个点就可以避免后续问题。 ① 内机离房顶距离不得小于1公分&#xff0c;避免机器运行时与墙顶产生共振。② 内机吊装需考虑百分之一的坡度&#xff0c;接冷凝水的一侧要稍微低一些&#xff0c;避免冷凝水排不…

单个像素的威胁:微小的变化如何欺骗深度学习系统

深度学习&#xff08;DL&#xff09;是人工智能&#xff08;AI&#xff09;的基本组成部分。它的目标是使机器能够执行需要决策机制的任务&#xff0c;这些决策机制往往近似于人类推理。深度学习模型是许多先进应用的核心&#xff0c;例如医疗诊断和自动驾驶汽车。不幸的是&…

饿了么后端登录模块

一、回顾 高并发集群 饿了么后端的登录模块 1、数据库 1. 主从复制(高可用) 2. 传统的主从复制 3. gtids事务型的主从复制 4. 注意 1. server_id唯一 2. 8.x版本需要get_ssl_pub_key 3. 5.x不需要 4. change master to 5. stop | start slave 5. 非交互 import pymy…

uniapp 地图map画出地市轮廓

最近做uniapp项目 H5微信小程序&#xff0c;需要在地图中打点并把相对应的区域轮廓给画出来。 首先查看uniapp官方文档&#xff1a;https://uniapp.dcloud.net.cn/component/map.html 想在uniapp中使用map直接写map标签即可 <view class"page-section page-section-…

CSS实现鼠标hover展开菜单

效果图&#xff1a; HTML源码&#xff1a; 背景图地址需要更改 <!-- 软件介绍 --> <div class"software-box"><div class"software-container"><div class"software-title"><h2>&ldquo; 一个软件搞定所有 &am…

创客匠人老蒋在「IP私域发售六脉神剑落地班」现场金句频出

破认知&#xff0c;提新知&#xff0c;老蒋的观点&#xff0c;再一次带你穿越周期 2024&#xff0c;变革不断&#xff0c;知识服务行业到底该怎么做&#xff1f;「IP私域发售六脉神剑落地班」现场&#xff0c;老蒋作为大课导师&#xff0c;再一次为大家带来了新鲜且颠覆的行业知…

基于SpringBoot的在线笔记网站的设计与实现

目录 项目技术和环境 页面展示 登录注册 管理员页面 用户页面 在线网址 源代码 本系统由十大核心模块构成&#xff0c;包括用户登录与注册模块、个人中心模块、笔记分类与笔记管理模块、笔记详情展示模块、分享协作与收藏管理模块、回收站与用户管理模块&#xff0c;以及…

CoppeliaSim(V-Rep)与ROS1、ROS2接口变迁-2024-

Webots&#xff1a;Webots与ROS1、ROS2接口变迁 Gazebo&#xff1a;Gazebo与ROS1、ROS2接口变迁 ROS1 2016&#xff1a;ROS_Kinetic_18 使用V-Rep3.3.1和Matlab2015b&#xff08;vrep_ros_bridge&#xff09;续 vrep_ros_bridge 插件 一、项目背景与目标 vrep_ros_bridge 是…

[数据集][目标检测]光伏发电板红外图像鸟粪检测数据集VOC+YOLO格式173张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;173 标注数量(xml文件个数)&#xff1a;173 标注数量(txt文件个数)&#xff1a;173 标注类别…

Windows—RAW编程

客服端骨架&#xff1a; #include <iostream> #include <WinSock2.h> #pragma comment(lib,"ws2_32.lib")int main() {WORD wVersionRequested MAKEWORD(2, 2);WSADATA lpWSAData;WSAStartup(wVersionRequested, &lpWSAData);SOCKADDR_IN saddr{ …

如何在没有密码的情况下解锁iPhone?

如果您的 iPhone 被锁定&#xff0c;知道如何在没有密码的情况下解锁它会派上用场。有几种方法可以帮助您重新使用无价的小工具&#xff0c;无论您是忘记了密码&#xff0c;还是现在只想使用手机。这篇博客文章将讨论在 iPhone 上设置密码的价值、忘记密码的典型原因以及在没有…

什么是DDOS攻击?DDOS攻击一小时多少钱?DDOS攻击如何防御?

什么是DDOS攻击? 拒绝服务攻击&#xff08;DDOS&#xff09;亦称洪水攻击&#xff0c;是一种网络攻击手法&#xff0c;其目的在于使目标计算机的网络或系统资源耗尽&#xff0c;使服务暂时中断或停止&#xff0c;导致其正常用户无法访问。当黑客使用网络上两个或以上被攻陷的计…

AWK的高级用法、三剑客总结

1、定义引用变量 -v:声明变量 案例一: 将系统的变量a,在awk里赋值为变量b,然后调用变量b -v 选项将其传递给 awk直接调用的话需要先用双引号再用单引号awk直接定义变量并引用调用函数getline,读取一行数据的时候并不是得到当前行而是当前行的下一行打印整个行面下面含有ro…

mp4怎么转换成mp3?看了就会的8种mp4转mp3方法!

mp4怎么转换成mp3&#xff1f;MP4作为广泛应用的视频格式&#xff0c;在日常娱乐与工作中扮演着重要角色&#xff0c;但它在特定情境下也带来了一些不便&#xff0c;你是否曾遇到过这样的困扰&#xff0c;当视频内容中的画面并非焦点&#xff0c;而你只对其中的音频感兴趣时&am…

鸿蒙Harmony编程开发:服务端证书锁定防范中间人攻击示例

1. TLS通讯中间人攻击及防范简介 TLS安全通讯的基础是基于对操作系统或者浏览器根证书的信任&#xff0c;如果CA证书签发机构被入侵&#xff0c;或者设备内置证书被篡改&#xff0c;都会导致TLS握手环节面临中间人攻击的风险。其实&#xff0c;这种风险被善意利用的情况还是很…

EasyCVR视频汇聚技术赋能智慧煤矿:车载设备接入方案助力实时监控与远程监管

在煤矿行业&#xff0c;智慧化转型已成为提升生产效率、保障安全的重要途径。随着物联网、大数据、云计算等技术的快速发展&#xff0c;智慧煤矿建设逐步深入&#xff0c;车载设备作为煤矿生产的重要一环&#xff0c;其接入智慧管理系统显得尤为重要。本文将详细介绍智慧煤矿车…

软件开发整体介绍

软件开发流程 需求分析&#xff1a;需求规格说明书&#xff08;一般以word文档的形式&#xff09;、产品原型&#xff08;静态页面展示出来&#xff09;设计&#xff1a;UI设计、数据库设计、接口设计编码&#xff1a;项目代码、单元测试测试&#xff1a;测试用例、测试报告上…

滚雪球学Java(89):Java GUI入门与进阶:AWT核心概念深度解析,有两下子!

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE啦&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好习惯&#…

html文件运行后界面反馈xxx拒绝连接

概述&#xff1a;我的html代码中包含了外站界面&#xff0c;运行后界面反馈到xxx拒绝连接&#xff0c;我尝试了网上的诸多方法&#xff0c;例如换一个浏览器运行&#xff0c;修改主机网络设置&#xff0c;更改浏览器DNS都没有作用。 <!DOCTYPE html> <html> <h…

html+css+js网页设计 电商 翡翠钻石电商网站10个页面

htmlcssjs网页设计 电商 翡翠钻石电商网站10个页面 网页作品代码简单&#xff0c;可使用任意HTML编辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源…