Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【C++】命名空间&缺省参数&函数重载&引用&内联函数

【C++】命名空间&缺省参数&函数重载&引用&内联函数

作者头像
MicroFrank
发布于 2023-01-16 03:28:41
发布于 2023-01-16 03:28:41
86500
代码可运行
举报
文章被收录于专栏:同步文章1234同步文章1234
运行总次数:0
代码可运行

目录 1.C++兼容C的语法 2.using namespace std的作用:解决C语言中变量命名冲突的问题  2-1namespace的由来 2-2namespace的使用: 3.使用标准库或自己定义的命名空间里的东西的三种方式:  4.C++中的输入和输出 5.缺省参数(缺省==不省==写上) 6. 函数重载 6-1.面试题: 6-1-1.为什么C语言不支持重载,C++支持?C++是如何支持的?---函数名修饰规则不同  6-1-2.extern "C'的作用 7.引用 7-1.引用的基本使用 7-2.引用的特性 : 7-3.常引用  7-4.引用的场景 8.内联函数



1.C++兼容C的语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//C++兼容C的语法

//C语言版本hello world
#include<stdio.h>
int main()
{
	printf("hello world\n");
	return 0;
}

//C++版本hello world
#include<iostream>
using namespace std;
int main()
{
	cout << "hello world" << endl;
	return 0;
}

2.using namespace std的作用:解决C语言中变量命名冲突的问题 

2-1namespace的由来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<stdio.h>


int main()
{
	
	int scanf = 10;//对
	int strlen = 20;//对
	//C语言中标识符命名的两个点:1.不能以数字,下划线开头 2.不能和关键字名字一样(但可以是函数名)


	printf("%d", scanf);//对
	printf("%d\n", strlen);//对


	scanf("%d", &scanf);//错
	//本意是第一个scanf用stdio.h里的库函数,第二个scanf用int类型的变量
	//但是C语言的局部优先原则,这里的两个scanf都是int类型的变量,所以出错

	//小结:如果我就是想要达成我的本意的这个目的,C语言明显做不到(有命名冲突的问题),所以C++就使用namespace命名空间域来完善C
}

这是将int scanf=10;放在了局部,定义int scanf的时候还是可以的,但是在使用scanf("%d",&scanf);时出现错误;

但是如果将scanf放在全局,连定义 都不被允许。namespace的使用:

2-2namespace的使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>

//定义的是一个命名空间域:(变量和函数构成)
namespace song
{
	//变量
	int scanf = 1;
	int strlen = 2;

	//函数
	int add(int a, int b)
	{
		return a + b;
	}
}

int main()
{
	//默认访问的是先局部后全局(局部没有则采用局部的)
	printf("%x\n", scanf);
	printf("%x\n", strlen);

	//指定访问song命名空间域
	printf("%x\n", song::scanf);
	printf("%x\n", song::strlen);

	printf("%d\n", song::add(10,20));
}

::是域作用限定符,限定是属于哪一个域的变量或者函数

常见的域有:局部域,全局域,命名空间域,类域 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
//全局域
int a = 10;

//命名空间域可以嵌套
namespace song
{
	int a = 20;

	namespace huang
	{
		int a = 30;
	}

	namespace chen
	{
		int a = 40;
	}
}

//类域
class stu
{
public:
	int a = 50;
};


int main()
{

	printf("默认先局部后全局(局部没有,全局有):a=%d\n", a);


	printf("指定song命名空间域:a=%d\n", song::a);


	printf("指定song命名空间域里的haung命名空间域:%d\n", song::huang::a);


	printf("指定song命名空间域里的chen命名空间域:%d\n", song::chen::a);

	stu s;
	printf("类域:%d\n", s.a);

	return 0;
}

备注:

  • 同一个项目的不同文件里 可以使用相同名称的命名空间域,编译链接时会自动合并
  •  但是在同一个域中不能定义相同的标识符

3.使用标准库或自己定义的命名空间里的东西的三种方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>

int main()
{
	//要使用标准库里的东西,有三种方式:


	//方式1:每一个都指定命名空间
	//麻烦但是最标准
	std::cout << "hello world1" << std::endl;

	//方式2:整个东西都在全局展开,一夜回到解放前
	//方便,但是当我们自己定义的和标准库里的东西名字相同,发生命名冲突的时候就没办法解决了
	using namespace std;
	cout << "hello world2" << endl;

	//方式3:折中办法,对于标准库中的部分常用进行展开
	using std::cout;
	using std::endl;
	cout << "hello world3" << endl;


	return 0;
}

给大家看看使用自己定义的东西也是有三种方式 :

 4.C++中的输入和输出

cout现在讲不清楚,我们的储备知识还不够,先记住使用即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//ostream 类型全局对象 cout
//istream 类型全局变量 cin
//endl 全局的换行符号

#include<iostream>
using namespace std;
int main()
{
	int a = 0;
	cin >> a;
	//自动识别类型:原理就是函数重载和运算符重载
	cout << a<< endl<< &a << endl;

	return 0;
}

5.缺省参数(缺省==不省==写上==默认)

缺省参数是指在声明和定义函数的时候为函数的参数设定一个默认值,在函数调用的时候,如果没有指定实参则采用该默认值.(备胎)

 缺省:迷惑的计算机术语之一

5-1缺省参数的分类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;

//缺省参数的分类

//1:全缺省
void test1(int a=10, int b=20, int c=30)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl << endl;
}

//2:半缺省
//部分缺省-必须从右往左连续缺省
void test2(int a , int b , int c =10)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
}
int main()
{

	test1(1, 2, 3);

	test2(1, 2);//实参个数>=没缺省的参数个数

	return 0;
}

 缺省参数的意义:(举例说明)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>

typedef struct Stack
{
	int* a;
	int size;
	int capacity;
}Stack;

//老版本:
//void InitStack(Stack* ps)
//{
//	ps->a = (int*)malloc(sizeof(int) * 4);
//	ps->size = 0;
//	ps->capacity = 4;
//}

//新版本:
void InitStack(Stack* ps, int capacity=4)
{
	ps->a = (int*)malloc(sizeof(int) * capacity);
	ps->size = 0;
	ps->capacity = capacity;
}

int main()
 {
	//假设我知道栈内至少需要存100个数据
	//如果现在将上面的capacity写成100,下面我ST2就没办法使用了
	//如果现在将上面的capacity写成10,在这里就要扩容,扩容是有时间成本的
	Stack ST1;
	//老版本:InitStack(&ST1);
	//新版本:
	InitStack(&ST1, 100);//传了,使用传的100

	//假设我知道栈内至少需要存10个数据
	Stack ST2;
	//老版本:InitStack(&ST2);
	InitStack(&ST2, 10);//传了,使用传的10

	//假设我不知道栈内至少需要存多少个数据
	Stack ST3;
	InitStack(&ST3);//不传,使用备用的4
	return 0;
}

备注: 缺省参数不能在函数声明和定义中同时出现,否则就会报错

最好是在声明时写缺省,也就是下面这样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void InitStack(Stack* ps, int capacity = 4);//声明缺省

int main()
 {
    //业务需求;
	return 0;
}

//新版本:
void InitStack(Stack* ps, int capacity)//定义不缺省
{
	ps->a = (int*)malloc(sizeof(int) * capacity);
	ps->size = 0;
	ps->capacity = capacity;
}

6. 函数重载

函数重载的定义:C++中支持两个函数名相同,但是函数的参数(参数的个数或者类型)要不同 

  1. C语言中一个项目中不允许出现同名函数
  2. C++中的函数重载允许一个项目中出现同名函数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
using namespace std;

int Add(int a, int b)
{
	return a + b;
}

char Add(char a, char b)
{
	return a + b;
}

double Add(double a, double b)
{
	return a + b;
}

float Add(float a, float b)
{
	return a + b;
}

int Add(int a, int b, int c)
{
	return a + b + c;
}

int main()
{
	cout << Add(1, 1) << endl;

	cout << Add('1', '1') << endl;//函数参数的类型构成重载
	cout << Add(1.1, 1.1)<< endl;//函数参数的类型构成重载//!!!备注:如果没强转或者备注,1.1默认就是double类型
	cout << Add((float)1.1, (float)1.1)<< endl;//函数参数的类型构成重载//强转
	//cout << Add(1.1f, 1.1f)<< endl;//函数参数的类型构成重载//备注



	cout << Add(1, 1, 1) << endl;//函数参数的个数构成重载

	return 0;
}

这样写简直是为难编译器了!!哈哈🐼 

思考:难怪C语言为什么不写交换函数和排序函数的库函数,那是因为C语言不支持函数重载,要还得像qsort一样,一个一个字节地交换,但是这样很不方便。

6-1.面试题:

  1. 为什么C语言支持函数重载,而C++支持函数重载?
  2. extern "C'的作用

6-1-1.为什么C语言不支持重载,C++支持?C++是如何支持的?---函数名修饰规则不同

备注:这里由于博主还没有干到LInux,就不能给大佬们演示linux下函数名修饰规则的具体内容了:

C 语言中:

C++中: 

 6-1-2.extern "C'的作用

6-1-2-1.什么是中间件程序?为什么会有extern "C"?

在写项目的时候,有的时候会用到中间件程序(配合可执行程序的一些组件): 通常我们就会把它编译成静态库或动态库(比如.dll). 如果这个中间件程序是用C++写的,但是整体的程序时用C语言写的,虽然在编译成二进制的指令的时候,C和C语言都没太大差异(因为此时已经经历了各自编译器的编译),但是由于C语言和C++的函数名修饰规则,整体程序在找中间件程序(组件)中的函数的时候就会表示找不到.这时extern "C"的作用就凸显出来了.

6-1-2-2.extern "C"的作用和为什么可以通过extern "C" 解决这个问题?

extern "C" 的作用:让C++用C的函数名规则去找函数地址. 基石:C++兼容C的语法,C++知道C语言的函数名规则,所以在有C和C++的函数名规则冲突的时候,在C++程序中使用extern "C" +函数声明  ,就可以解决这个问题.

6-1-2-3.extern "C"的使用场景举例:

下面以谷歌自己用C++写的tcmalloc代替mallc ,然后写成了一个中间件程序,后来一个C语言程序想用这个中间件程序代替mallc时他遇到的问题和解决办法:

变式: 如果加完了extern "C",有同时有整体C++程序想使用这个被extern "C"修饰过了的中间件.这就可以将这个整体C++程序前加上extern "C".

7.引用

7-1.引用的基本使用(reference)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
int main()
{
	int a = 10;
	int& b = a;//b是a的别名,b是a的引用
	printf("%d\n", b);

	b = 100;
	printf("%d\n", a);
}

 注意:int& b=a;是取别名

而int* b=&a;是取地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>

using namespace std;

void Swap(int* m, int* n)
{
	int temp = *m;
	*m = *n;
	*n = temp;
}

void Swap(int& m, int& n)
{
	int temp = m;
	m = n;
	n = temp;
}

int main()
{
	int a = 10;
	int b = 20;

	//传地址交换
	Swap(&a, &b);
	printf("a=%d\tb=%d\n", a, b);

	//传引用交换
	Swap(a, b);
	printf("a=%d\tb=%d\n", a, b);


	return 0;
}

7-2.引用的特性 :

  1. 一个变量可以有多个别名
  2. 引用必须初始化(但是指针没有初始化的规定)
  3. 引用一旦引用了一个实体后,就不能再引用其他实体
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	
	int a = 10;

	//一个变量可以有多个别名b,c,d
	int& b = a;
	int& c = a;
	int& d = a;

	//引用必须初始化
	int& e = a;

	//不是让e变成r的别名,而是把r赋值给e
	int r = 20;
	e = r;
	printf("%d\n", e);//20

	return 0;
}

7-3.常引用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
    //const权限
    const int a = 10;//这里的a是可读不可写
	int& ra = a;//错,权限的放大不允许
	//错在把可读不可写的变量a给一个可读可写的引用
	const int& ra = a;//对



	int b = 10;//-可读可写
	const int& rb = b;//对,权限的缩小允许-可读不可写


	return 0;
}

只要是有类型差异在赋值转换时都会产生临时变量 转换:转换的是中间的临时变量,而不是c

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	//隐式转换(权限的应用)
	int c = 10;
	double d = 1.1;
	d = c;//对,c语言隐式类型转换,但还是一样是有临时变量(double)类型

	//double& rc = c;//错,错因是因为是const double 类型的临时变量给了double类型的变量
	const double& rc = c;//对

备注:这里rc引用的不是C,因为类型差异(字节都不一样),rc引用的其实时中间的那个临时变量.

 7-4.引用的场景

7-4-1.作参数

 7-4-2做返回值(传引用返回)

先看看之前我们学过的传值返回:

传值返回返回的是对象c的拷贝

 这里说明了实际上是函数返回值是通过产生一个临时变量(const修饰)来临时保存,然后赋值给ret。

传引用返回:

传引用返回的是对象c的引用

 这里返回值是int&,也就是返回的是c的引用,也就是c的别名,然后c的别名又是ret的别名

函数栈帧问题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int& Add(int a, int b)
{
	int c = a + b;
	return c;
}

int main()
{
	const int& ret = Add(1, 2);
	Add(5, 7);
	cout << ret << endl;//12
	return 0;
}

下面即是在main函数里没有用ret接收Add(5,7)的返回值,ret还是被改为了12,那是对因为ret是栈上已经销毁的变量c的引用 。

 但是如果是传值返回:调用了Add(5,7),还是3

或者把c定义在static,静态常量区上:

越界不一定报错: 1.越界读基本不报错,因为编译器检查不出来 2.越界写,可能报错,而且是抽查,就像查酒驾,一般是查可能性大的地界查--抽查

传引用返回的优点:

因为传值返回传的是对象的拷贝,但是传引用返回是返回的是对象的别名,可以提高效率,这和传值调用和传址调用很像。

指针和引用的异同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	int a = 10;
	
	//语法上,这里是给a起了一个别名,而是新定义了一个符号,并没有额外开空间
	int& ra = a;
	ra = 20;

	//语法上,这里是定义了内存是4个字节的变量存放a的地址
	int* pa = &a;
	*pa = 20;

	return 0;
}

实际从汇编实现的角度,引用的本质类似指针取地址的方式实现的(语法层和底层是隔离开的)---了解即可

指针和引用的不同点::

  1. 内存开辟角度(概念上)
  2. 初始化角度
  3. 实体对象更改角度
  4. 空指针角度
  5. 多级指针角度
  6. 引用更安全角度

8.内联函数

由C语言引入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//C语言为了避免小函数开辟函数栈帧的开销--->提供了宏,预处理阶段展开
#define Add(x,y)  ((x)+(y))
int main()
{
	int x = 1, y = 2;
	int ret = Add(1, 2);
	printf("%d\n", ret);

	return 0;
}

C++推荐使用频繁的小函数,定义成inline函数,没有函数的开销,只是在调用的时候展开 内联函数:这里结合了宏没有函数开销的优点,同时又丢弃了宏复杂和不支持调试的缺点。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
inline int Add(int a, int b)
{
	return a + b;
}

int main()
{
	int x = 1, y = 2;
	int ret = Add(1, 2);
	printf("%d\n", ret);

	return 0;
}

为什么不是将所有的函数定义成内联函数?(内联的缺陷)

1.因为内联函数的本质是通过通过牺牲展开函数,增加主函数代码量(指令变多,导致编译出来的程序变大,备注:指令变多不一定耗时长)来提高效率,而减少函数调用的开销,从而提高效率的。------>空间换时间所以适合将那些函数内部代码量比较少且频繁被调用的的函数定义成内联。当把大函数定义成内联时,编译器直接不搭理你的定义内联。备注:当调用1000次时,内联展开和调用函数的指令数是截然不同的。 2.内联不建议声明和定义分离,因为内联函数没有地址(直接展开了),会导致链接时找不到。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++入门】命名空间、缺省参数、函数重载
在正式进入C++之前,我们首先要对C++有一个基本的认知。这里我就不过多的进行描述了,有兴趣的可以去网络搜索一番。总而言之,从名称上面我们也可以看得出来,C++是在C的基础上进行不断地优化发展。事实上确实是这样,C语言中90%以上的语法在C++中都适用。
诺诺的包包
2023/02/20
7060
【c++入门】命名空间,缺省参数与函数重载
C++是一种与C语言紧密相关的编程语言。尽管它继承了C语言的许多特点,但C++引入了面向对象编程等概念,并增加了一些自己的特性和关键字来支持这些特性。比较C++和C语言的关键字,我们可以发现以下特征:
用户11029103
2024/03/24
2450
【c++入门】命名空间,缺省参数与函数重载
【C++入门】缺省参数、函数重载与引用
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参。
大耳朵土土垚
2024/04/09
2230
【C++入门】缺省参数、函数重载与引用
【C++】学完c语言后的c++基础知识补充!(命名空间、输入和输出、缺省函数、函数重载、引用、内联函数代替宏、nullptr代替NULL)
(注意!}后面不加;)
用户11292525
2024/09/26
930
【C++】学完c语言后的c++基础知识补充!(命名空间、输入和输出、缺省函数、函数重载、引用、内联函数代替宏、nullptr代替NULL)
【C++修行之道】命名空间 、C++输入&输出、缺省参数和函数重载
C++总计63个关键字,C语言32个关键字 ps:下面我们只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面我们学到以后再 细讲。
走在努力路上的自己
2024/05/26
1030
【C++修行之道】命名空间 、C++输入&输出、缺省参数和函数重载
【C++】C++基础
下面只是看一下C++有多少关键字,不对关键字进行具体的讲解。后面对应文章会详细讲解。
ZLRRLZ
2024/12/13
1320
【C++】C++基础
C++心决之命名空间、重载函数和引用
在 C/C++ 中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存
一枕眠秋雨
2024/04/04
1350
C++心决之命名空间、重载函数和引用
开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)
都会想这是什么??大多老师都会让说:你们先记着这是固定的,以后会懂(结果到了期末考完也什么都没说)
是Nero哦
2024/01/18
2020
开启C++之旅(上):探索命名空间与函数特性(缺省参数和函数重载)
【C++】穿越编程岁月,细品C++进化轨迹,深化入门基石(续章)——揭秘函数缺省参数的魅力、函数重载的艺术、引用的奥秘与内联函数的效率
TANGLONG
2025/01/09
1310
【C++】穿越编程岁月,细品C++进化轨迹,深化入门基石(续章)——揭秘函数缺省参数的魅力、函数重载的艺术、引用的奥秘与内联函数的效率
【C++】入门基础介绍(下)输入输出,函数重载,缺省与引用
iostream是 Input Output Stream 的缩写,是标准输入、输出流库,定义了标准的输入、输出对象。 包含C++标准库是不需要+.h后缀。
fhvyxyci
2024/10/08
1400
【C++】入门基础介绍(下)输入输出,函数重载,缺省与引用
C++基础入门
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的helloworld依旧可以运⾏,C++中需要把定义⽂件 代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc
逆向-落叶
2024/10/28
1300
C++基础入门
C++打怪升级(一)- 命名空间、缺省形参、重载
C++相比C语言(32个)引入了更多的(63个)关键字,这一点也可以管中窥豹看出一点C++的复杂。
怠惰的未禾
2023/04/27
9140
C++打怪升级(一)- 命名空间、缺省形参、重载
C++入门
        C++ 也就是 c语言plus plus版本 所以兼容很多C语言内容依然可以使用。
2024/08/06
1210
C++进阶之路:何为命名空间、缺省参数与函数重载
命名空间是一种将相关的代码组织在一起的方法,以避免命名冲突。当你有两个或多个库或模块,它们定义了相同名称的类或函数时,命名空间就派上了用场。
Srlua
2024/05/11
1300
C++进阶之路:何为命名空间、缺省参数与函数重载
【C++】基础入门
C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc。当然C++有⼀套⾃⼰的输⼊输出,严格说C++版本的hello world应该是这样写的。(后续会讲到)。如下:
用户11375356
2024/11/22
760
【C++】基础入门
C++入门(函数重载、缺省参数、引用)
在自然语言中,相同的一个词可能有多重含义,人们可以通过上下文来判断这个词的具体意思,在C++中也存在这种现象,这种现象叫做函数重载。
用户11305458
2024/10/09
1600
C++入门(函数重载、缺省参数、引用)
【C++】入门基础(上)
提示:第一个链接不是C++官方文档,标准也只是更新到C++11,但是以头文件形式呈现,内容比较易看好懂,后两个链接分别是C++官方文档的中文版和英文版,信息很全,更新到了最新的C++标准,没有第一个那么易看,各有优点,相互结合使用即可。
云边有个稻草人
2024/10/21
890
【C++】入门基础(上)
【C++】C++入门
a. 之前的C语言学习中我们就了解过全局和局部这部分的知识了,在C++里面他们有一个新的名词就是域,域就相当于一片领地,如果想定义两个一模一样的变量在同一个域中,这显然是不行的,会出现变量重命名的问题,但是这样的问题还是比较常见的,因为c++和C语言中都有很多的模板,函数库等等,难免我们定义的和库里面定义的,产生命名冲突和名字污染,namespace所创建的命名空间就是用来解决这样的问题的。
举杯邀明月
2023/04/12
2.9K0
【C++】C++入门
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
如上图,当我们没包stdlib.h的头文件时,可以正常打印。但如果包了该头文件,就会发生错误。
秦jh
2024/02/08
1730
【C++】基础知识讲解(命名空间、缺省参数、重载、输入输出)
【C++】— c++入门基础
首先C++兼容C语言的大多数语法,所以用C语言实现 Hello world! 同样也可以运行。 💦<1>用C语言实现 Hello world!
_孙同学
2024/10/21
810
【C++】— c++入门基础
推荐阅读
相关推荐
【C++入门】命名空间、缺省参数、函数重载
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验