当前位置: 首页 > 编程日记 > 正文

C/C++刷题知识点总结

纠正一些知识性偏见、欠缺:

  1. 变量占用内存大小,是用sizeof()计算出来那个,定义字符型数据时后面不添加’\0‘的,但是在字符串数组后面是添加的;例如char a[]={'a','b','c'};``char b[]={"abc"};两个数组的长度是不一样的。
  2. 按位与是转化为二进制,按照规则:1&1=1 1&0=0 0&0=0进行计算;
  3. feof()函数从输入流进行读数据,如果文件未达到文末,则返回非0值,否则为0值
  4. 对于一个频繁使用的短小函数,C中是用宏定义的,C++中是用内联函数实现

牛客网

一、选择判断

1.分析下面代码有什么问题?

void test2() 
{ char string[10], str1[10]; int i; for(i=0; i<10; i++) { str1  = 'a'; } 
strcpy( string, str1 ); 
} 

知识点:

  • strcpy源地址开始拷贝,直到遇到\0才结束。如果一直没有遇到\0,就会导致越界访问非法内存
  • 数组名为指向第一个元素指针,为char *const类型右值类型,右值类型是不可以被赋值的

正解如下:

void test2()
{char string[10], str1[10];int i;for(i=0; i<9; i++){str1[i]  = 'a';}str1[9] = '\0';strcpy( string, str1 );
}

2.可以参加位运算的数据类型可以是:intcharlong int

不可以是:doublefloat是不可以的

3.**判断题:**静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据。( )

在这里插入图片描述

4.字符串“a+b=20\n”的长度是(7)?

知识点:长度使用函数strlen(),内存大小用sizeof()

本题长度为:a、+、b、=、2、0、\n共计7个

**string定义的变量占用内存大小:**28字节(C++中定义的这个变量就是28字节)

在这里插入图片描述

5.编译器

如果定义如下类:class Empty{}请选择编译器为之生成的函数有哪些? (  )Empty() { … }Empty(const Empty& rhs){ … }Empty& operator=(const Empty& rhs) { … }~Empty() { … }答案:1234

解析:

class Empty  
{  public:  Empty();                            //缺省构造函数  Empty(const Empty &rhs);            //拷贝构造函数  ~Empty();                           //析构函数   Empty& operator=(const Empty &rhs); //赋值运算符  Empty* operator&();                 //取址运算符  const Empty* operator&() const;     //取址运算符(const版本)  
};  

以上函数将会被编译器生成!

6.在重载某运算符时,若运算符函数的形参表中没有参数,则可能的情况有(ABC)

A.该运算符是一个单目运算符。
B.该运算符函数有一个隐含的参数this。
C.该运算符函数是类的成员函数。
D.该运算符函数是类的友元函数。

知识点:

运算符操作数至少为1个,

首先友元函数重载运算符,必须至少有1个参数,因为没有隐含的this指针。

对于成员函数重载运算符,参数可以为0个,因为有隐含的this指针。(成员运算符重载函数不能用static修饰)。

因而对于无参数的运算符重载函数,必然为单目运算符的成员函数,当然有this指针。

7、已知函数 int fun( int i )。以下声明函数指针pfunc的语句正确的是(C)

A.int*pfunc( int );
B.int *pfunc( int )();
C.int(*pfunc)(int);
D.int(*pfunc)(int)();

根据右左法则

int (*P)( ) 是函数指针,指向函数的指针, p 是一个指向函数入口的指针 变量, 该函数没有形参 函数的返回值是int 型

int *p() 是指针函数,返回值为指针的函数 p 是函数的入口地址, 该函数没有形参, 返回值为 int * 型

定义一个函数指针p,只能指向返回值为int,形参为1个int的函数

8.正则表达式语法中 \d 匹配的是?(A)

A.数字

B.非数字

C.字母

D.空白字符

\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配字母、数字、下划线。等价于’[A-Za-z0-9_]’。
\W 匹配非字母、数字、下划线。等价于 ‘[^A-Za-z0-9_]’。

9.已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?(B)

  • m. length()
  • m. length-1
  • m. length()+1
  • m. length+1

数组是有length属性,String是有.length()方法,本题是数组,那么A、C就是错的表示方式,m. length = 7

10.在下列表示引用的方法中,( A)是正确的。已知:int m=10;

A.int &x=m

B.int &y=10

C.int &z;

D.float &t=&m;

引用就是某一变量(目标)的一个别名,对引用的操作对变量直接操作完全一样。

引用的声明方法:类型标识符 &引用名=目标变量名

举个例子:

int a;

int &ra=a; //定义引用ra,它是变量a的引用,即别名

说明:

(1)&在此不是求地址运算,而是起标识作用

(2)类型标识符是指目标变量的类型。

(3)声明引用时,必须同时对其进行初始化

(4)引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称引用名,且不能再把该引用名作为其他变量名的别名。

ra=1; 等价于 a=1;

(5)声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。故:对引用求地址,就是对目标变量求地址。&ra与&a相等。

(6)不能建立数组的引用。因为数组是一个由若干个元素所组成的集合,所以无法建立一个数组的别名。

引用的主要作用:

(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不如意的问题。

(2)用引用传递函数的参数,能保证参数传递中不产生副本,提高传递的效率,且通过const的使用,保证了引用传递的安全性。

(3)引用与指针的区别是,指针通过某个指针变量指向一个对象后,对它所指向的变量间接操作。程序中使用指针,程序的可读性差;而引用本身就是目标变量的别名,对引用的操作就是对目标变量的操作。

(4)使用引用的时机。流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、其它情况都推荐使用引用。

11.若言int a[10],*p=a;则以下表示中不能代表a[6]的是(D)。

A.p[6]

B.*(a+6)

C.*(p+6)

D.p+6

p表示a的首地址,D表示a[6]的地址,但是不是表示a[6]

12.下面程序结果输出为?

#include <iostream>
using namespace std;
class A
{
public:A(){cout << "1";}A(A &a){cout << "2";}virtual ~A(){cout << "3";}
};class B: public A
{
public:B(){cout << "4";}B(B &b){cout << "5";}~B(){cout << "6";}
};int main()
{A *pa = new B();delete pa;return 0;
}

答案:1463

考察的是对继承体系中的构造析构函数调用顺序的理解。

在调用new B()的时候,因为B继承A,所以会首先调用其父类的构造函数,输出1

然后调用自己的构造函数,输出4

在析构的时候顺序是反过来的,先调用自己的析构函数,输出6

然后调用父类的析构函数,输出3

而这里没有用到拷贝构造函数,所以不用管它。

13.找出以下关于float的不正确的声明

A.float foo=-1;

B.float foo=1.0;

C.float foo=2.02f;

D.float foo=0x0123;

答案:B

浮点型默认是double型的,所以B有问题,整型是可以转换到单精度型的。

14.用Struct代替class的时候以下哪些描述是对的?

知识点:

C++中的类(class),结构(struct)的区别:class的成员默认为private,但是可以声明成为publicprivateprotected,结构中的成员默认都是public

15.以下选项如果可以初始化正确,那么就会初始化正确,那么以下哪种语法在C++中初始化以后编译会错误?其中X为一C++类

A.const X * x

B.X const * x

C.const X const * x

D.X * const x

答案:CD

const*前面 都表示*x不可修改

C中*前出现两个const,g++编译器提示duplicate’const’,语法错误
D中const*后面,表示指针不可修改,需要初始化。const类型的指针声明时必须初始化
p.s X* const x放在类中当一个成员,是没有错误的。

const知识点:

const 限定一个对象为只读属性。
先从一级指针说起吧:
(1)const char p 限定变量p为只读。这样如p=2这样的赋值操作就是错误的。
(2)const char *p p为一个指向char类型的指针,const只限定p指向的对象为只读。这样,p=&a或 p++等操作都是合法的,但如*p=4这样的操作就错了,因为企图改写这个已经被限定为只读属性的对象。
(3)char *const p 限定此指针为只读,这样p=&a或 p++等操作都是不合法的。而p=3这样的操作合法,因为并没有限定其最终对象为只读
(4)const char *const p 两者皆限定为只读,不能改写。
有了以上的对比,再来看二级指针问题:
(1)const char **p p为一个指向指针的指针,const限定其最终对象为只读,显然这最终对象也是为char类型的变量。故像**p=3这样的赋值是错误的,而像p=? p++这样的操作合法。
(2)const char * const *p 限定最终对象和 p指向的指针为只读。这样 *p=?的操作也是错的。
(3)const char * const * const p 全部限定为只读,都不可以改写。
总结一下就是看const后跟的是什么,*为对象,变量为指针(针对const指针情况)

16.数据封装

C++是通过类进行封装,是把数据和与这些数据有关的操作封装在一个类中

C++中struct的默认类型是public,但是也可以设置为private形式

17.数组、指针

a:整个四维数组的地址

*(a+i) = a[i]

*(a+i)+j = a[i] +j

*((a+i)+j) = a[i][j]

*((a+i)+j)+k = a[i][j]+k

*( *((a+i)+j)+k ) = a[i][j][k]

*( *((a+i)+j)+k )+l = a[i][j][k]+l

*( *(*((a+i)+j)+k )+l ) = a[i][j][k][l]

18.关于const的问题

△ 欲阻止一个变量被改变,可以使用const关键字。

△ 在一个函数声明中,const可以修饰形参,表明它是一个输入参数,在函数内部不能改变其值

△ 对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”

△ 对于类的成员函数,若指定其为const类型,则表明其是一个常函数,不能修改类的成员 变量;

19.数据存储

union X{int x;char y[4]; 
};//答案为::22或33

解释:0x是十六进制存储,若是小端存储,低位在低地址,即0x44是最低位,那么y[0]就是0x44,那么y[1]就是0x33,若为大端存储,那么高位在低地址,0x11是高位,即可得y[1] = 0x22,

20.指针、返回值

有如下一段程序:int f1(float);int f2(char);void f3(float);int (*pf)(float);以下语句合法的是( A )?A.int (*p)(float)=&amp;f1;
B.pf=&amp;f2;
C.pf=&amp;f3;
D.pf=f3;解释:HTML中的符号实体 &amp; 就是符号&int (*pf)(float)表示定义一个返回值为int,参数为float的函数指针,根据返回值类型以及参数类型一致选择A。

21.C++中的struct

  • 在C++中,来自class的继承默认按照private继承处理,来自struct的继承默认按照public继承处理
  • class的成员默认是private权限,struct默认是public权限
  • c里面的struct只是变量的聚合体,struct不能有函数
  • c++的struct可有构造和析构函数

22.根据程序填写结果

有以下程序
#include<iostream> 
#include<fstream> 
#include<string> 
using namespace std; 
int main() 
{ofstream File1("text.txt");  
string d("20160314"); 
string y=d.substr(0,4); 
int k=d.find("2");
int i=d.find("3"); 
string m=d.substr(k+2,i-k); 
string dd=d.substr(i+1,2); 
string n=dd+m+y; 
File1<<n<<endl; 
File1.close(); 
}                                            
文件text.txt中写入的结果是(14160312016)解释:substr(a, b):从字符串的下标a开始,复制长度为b的字符子串find(c):返回字符串中第一个值为c的下标因此,k=0,i=5

23.关于重载和虚函数说法

A.虚函数是类的成员函数

B.虚函数实现了C++的多态性

C.函数重载允许非成员函数,而虚函数不行

D.函数重载的调用是根据参数个数、序列来确定,而虚函数依据对象来确定

相关文章:

虚幻引擎5:从零开始的蓝图近战AI学习教程

Unreal Engine 5: Blueprint Melee Combat AI from Scratch 创建一个动作游戏&#xff0c;以打击2个独特的人工智能&#xff0c;包括一个火蔓延龙&#xff01; 你会学到什么 学习使用虚幻引擎5的技巧 如何通过蓝图设计和创建人工智能 学会创造两种独特的人工智能 学会在战斗中…

git add 文件夹_Git的下载安装以及基本操作

二&#xff0c;配置git&#xff1a;用户名和邮箱在桌面右键-【Git Bash Here】输入命令&#xff1a;git config --global user.name "lijiang"git config --global user.email "2906718132qq.com"查看用户名和邮箱是否配置成功&#xff0c;去这个路径&…

scapy windows install

最近有点扫描网络的需求&#xff0c;都说scapy好&#xff0c;但是安装是个事&#xff08;当然指的是windows安装&#xff09;有个scapy3k&#xff0c;支持python3&#xff0c;可惜需要powershell&#xff0c;也就是说windows xp是没有戏了。 网上说最好python2.6&#xff0c;但…

Enda 的 2015 下半年读书计划

2015下半年的读书计划 php 方面 《PHP设计模式》 《PHP核心技术与最佳实践》 《learning php设计模式》 《深入php》 Mysql 方面 《高性能MySQL》 《深入理解mysql核心技术》 其他 《天才在左疯子在右》 大家有什么好书吗&#xff1f;推荐推荐嘛&#xff5e;&#xff5e;

Qt嵌入外部EXE程序,并显示在主界面中!

一、获取程序句柄以及类 打开Visual Studio 进行查询 二、QT调用程序 H文件 #ifndef VISUAL_H #define VISUAL_H#include <QWidget> #include <QProcess> #include<Windows.h> #include<QWindow>QT_BEGIN_NAMESPACE namespace Ui { class Vi…

UE虚幻引擎:建筑可视化学习教程 Unreal Engine : Architectural Visualization

使用这套4合1虚幻引擎课程包提高您的建筑可视化技能 你会学到什么 准备要导出的Revit模型 使用虚幻数据史密斯产品查看器工具 创造UE的材料 交换材料 点亮你的模型 添加交互 打包内容以便在虚拟现实和移动设备上分发 迁移材料包 批量更换材料 静态和动态照明 光照图分析、校正…

NOIP2013普及组 T2 表达式求值

OJ地址&#xff1a;洛谷P1981 CODEVS 3292 正常写法是用栈 1 #include<iostream>2 #include<algorithm>3 #include<cmath>4 #include<stack>5 #include<cstring>6 #include<cstdio>7 using namespace std;8 char c[20000000];9 10 stack&…

清除图片下默认的小间隙_密封间隙对迷宫密封性能影响的三维数值分析

建立迷宫密封的三维模型&#xff1b;采用GAMBIT对迷宫间隙进行非结构化网格划分&#xff0c;模拟密封间隙对迷宫密封性能的影响&#xff0c;并与二维截面模型模拟结果进行对比。结果表明&#xff1a;在考虑周向湍流的影响下&#xff0c;泄漏量相对于仅考虑横向及纵向湍流f的影响…

Thrift抛直接内存OOM一点解决思路

2019独角兽企业重金招聘Python工程师标准>>> 最近使用Thrift TThreadedSelectorServer服务方式&#xff0c;运行一段时间就会抛OutOfMemoryError: Direct buffer memory异常&#xff1b; java.lang.OutOfMemoryError: Direct buffer memoryat java.nio.Bits.reserve…

C/C++、嵌入式开发岗笔试集锦

图标链接 C运算符检索&#xff08;点击查看 - 转&#xff09; C构造函数、拷贝函数等理解&#xff08;点击查看 - 转&#xff09; 题目 ⭐⭐⭐1.&#xff08;STL库&#xff09;请问C的STL库中map的底层数据结构为&#xff08;&#xff09;&#xff0c;multimap的底层数据结…

Blender制作3D模型导出到UE5完整学习教程

学习如何在Blender中创建AAA游戏资产&#xff0c;然后导出到虚幻引擎5的完整指南 你会学到什么 遵循关于创建一套AAA游戏就绪的优质中世纪市场摊位的完整指南 最大化您的推荐人的潜力&#xff0c;以开发强大的游戏资产概念 使用Blender并了解其界面和快捷方式 从初级水平到世界…

[纪录]仿IOS滚轮效果(竖直滑动选择器)

今天想做一个类似这样的一个效果,可是UI的模板是参考IOS做的,于是就各种百度各种搜,最后让我找到了一个仿IOS滚轮的一个Demo,稍微研究了一下,发上来,大家一起学习,以后也方便我查看,就不用再去百度了,嘿嘿! 仿IOS滚轮效果 首先是一个类,继承了ScrollView public class WheelVie…

win7如何设置wifi热点_xp系统怎么设置无线网络热点(电脑设置wifi热点步骤)

现在手机基本都是可以开启wifi热点功能&#xff0c;但有时候因为各种原因&#xff0c;比如没有无线或者路由器有问题等情况&#xff0c;手机又需要使用网络&#xff0c;这个时候需要用电脑设置wifi热点。那么&#xff0c;怎么用电脑设置wifi热点呢&#xff1f;下面分别用win10系…

汇编语言第二课作业-实验1

Debug命令-摘自百度百科A 汇编命令 功能&#xff1a; 将指令直接汇编成机器码输入到内存中。说明&#xff1a; 用于小段程序的汇编及修改目标程序&#xff0c;所有输入的数字均采用十六进制&#xff0c; 用户装入内存的汇编语句是连续存放的&#xff0c;若没有指定地址&#xf…

C++、嵌入式软开之数据结构

总结&#xff1a; 1.二叉树搜索树是需要进行比较大小&#xff0c;满足传递性才可&#xff1b; 刷题总结&#xff1a; 1.&#xff08;二叉树遍历&#xff09;已知某二叉树的后序遍历序列是dabec&#xff0c;中序遍历序列是debac&#xff0c;它的前序遍历是&#xff08;&#xf…

3dsMax插件V-Ray渲染与合成学习课程 3ds Max: Rendering for Compositing in V-Ray Next

使用渲染元素&#xff0c;3ds Max的V-Ray Next对创建高质量合成所需的参数(如反射、阴影、遮罩等)提供了精细的控制。在本课程中&#xff0c;布莱恩布拉德利展示了如何在Photoshop和After Effects等应用程序中使用V-Ray Next为后期制作工作流专门创建渲染。探索渲染元素用户界面…

对找数程序的理解

经过几个小时的思考&#xff0c;总算是对老师出的这个程序题有了一定的了解。该C#程序是一个对数字进行查找的程序。程序清单如下&#xff1a; using System; using System.Collections.Generic; using System.Text; namespace FindTheNumber {  class Program  {    s…

win10鼠标灵敏度怎么调_和平精英最稳压枪灵敏度怎么调教程,适合所有段位以及适合国际版PUBG手游压枪...

和平精英(原刺激战场)主播最稳压枪灵敏度怎么调&#xff1f;不妨看看花了五个小时调试的最稳和平精英压枪灵敏度吧。废话不多&#xff0c;上图按照调。保证你满意&#xff0c;你离主播只差点意识此和平精英压枪灵敏度适合所有段位 也适合PUBG(和平精英国际版)-------分割线---…

C++基本知识点集锦(2022秋招)

&#xff08;1&#xff09;构造函数是一种特殊的类成员函数&#xff0c;是当创建一个类的对象时&#xff0c;它被调用来对类的数据成员进行初始化和分配内存。&#xff08;构造函数的命名必须和类名完全相同&#xff09; &#xff08;2&#xff09;C的空类&#xff0c;编译器会…

Sketchup插件Vray户外场景设计渲染教程 Vray Next For Sketchup Exterior

Sketchup户外场景设计的Vray Next 你会学到什么 渲染白天和夜晚场景 后期制作 Sketchup的Vray Next 中级sketchup用户 大小解压后&#xff1a;3.83G 1280X720 mp4 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09; 大家好&#xff0c; 我是…

实验四:使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

贺邦原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 实验目的&#xff1a; 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用&#xff0c;理解系统调用的工作机制。 实验过程&#xff1a; 本文实验选择24号…

三菱plc232数据线驱动下载_三菱PLC与西门子PLC有什么区别?

三菱PLC与西门子PLC有什么区别&#xff1f;分别有什么优点和缺点&#xff1f;该如何选择&#xff1f;学习哪种品牌&#xff1f;首先它们的编程理念不同&#xff0c;三菱PLC是日系品牌&#xff0c;编程直观易懂&#xff0c;学习起来会比较轻松&#xff0c;西门子PLC是德国品牌&a…

Github 树形菜单插件

ajax显示gitlab的&#xff0c;很像mac的树形展示。 直接在左侧做了一个ajax的树&#xff0c;每次访问gitlab自动加载。非常方便呢&#xff0c;在国内网速这么慢的情况下更显得好用了。 下载地址&#xff1a; https://github.com/buunguyen/octotree/tree/master/dist chrome安装…

C/C++、嵌入式秋招之SQL篇

⭐⭐1.选取最大&#xff08;小&#xff09;值 SELECT * FROM employees order by hire_date desc limit 0,1解释&#xff1a; 知识点 ORDER BY 根据指定的列对结果集进行排序&#xff0c;默认按照升序&#xff0c;降序 ORDER BY DESCLIMIT(m, n) 从第 m 1 行开始取 n 条记录…

C4D样条曲线建模大师班 Cinema 4D MasterClass: Master Modelling using Splines

通过本课程&#xff0c;快速学习使用样条曲线建模的基础知识&#xff0c;并将您的技能提升到一个新的水平 你会学到什么 能够使用样条线对整个对象进行建模 三维建模和UV展开 能够找到模拟复杂形状的最佳方法 无数的提示和技巧 在项目中应用蓝图的真实尺寸 对Uv制图有更好的理…

从头到尾彻底解析Hash表算法

从头到尾彻底解析Hash表算法 发布时间: 2013-10-02 10:26 阅读: 25156 次 推荐: 14 原文链接 [收藏] 作者&#xff1a;July、wuliming、pkuoliver 说明&#xff1a;本文分为三部分内容&#xff0c; 第一部分为一道百度面试题Top K算法的详解&#xff1b;第二部分为关于H…

ftp windows无法访问此文件夹请确保输入的文件名_企业实战|企业FTP搭建

安装Vsftpd提前关闭selinux 和firewalld防火墙1.安装vsftp软件包 $ yum -y install vsftpd*2.启动vsftpd服务器 $ systemctl restart vsftpd $ systemctl enable vsftpd3.检查服务是否正常启动 $ ps -ef|grep vsftp && netstat -tunlp|grep 21至此 匿名用户的ft…

C++、嵌入式软开之指针

1.(指针数据)int* pa[5]; 描述: pa是一个具有5个元素的指针数组,每个元素是一个int类型的指针; 2.(二级指针)以下程序的输出结果是: #include <iostream> using namespace std; void func(char **m){++m;cout

3dsMax插件V-Ray建筑可视化三维渲染细节技术学习教程

通过学习可用于相机放置、建模、修整等的策略&#xff0c;生成令人印象深刻且逼真的建筑三维渲染。了解如何将您的3D渲染场景提升到一个新的水平&#xff0c;以使您的图像引人入胜、有趣且讨人喜欢。在本课程中&#xff0c;讲师Verena Tatiana首先讨论了不同的细节处理方法&…

所有表单对象_Laravel 表单方法伪造与 CSRF 攻击防护

1、表单方法伪造有时候&#xff0c;我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式&#xff0c;而 HTML 表单仅支持 GET 和 POST 两种方式&#xff0c;如果要使用其他的方式&#xff0c;则需要自己来定义实现。HTTP 请求方式概述最常见的 HTTP 请求方式自然是 GET 和…