C++入门

          C++兼容C

        1、简单对比C和C++(代码)

           " hello world "

        C:

#include<stdio.h>
int main()
{
	printf("hello world\n");
	return 0;
}

        C++:

#include<iostream>
using namespace std;

int main()
{
	cout << "hello world" << endl;

	return 0;
}

         C++中所有库的东西都放入std这个命名空间,即std是C++所有库的命名空间

        可以看出,C和C++在语法上面差别是很大的,并且C++的语法更加复杂,因此造就了C++是最难学的语言之一。

        2、C++关键字

        C++关键字总计63个,C只有32个。

d0f1e0ec55b2427ba73e9bcc6d910deb.png

        3、域

        C++里面分:全局域,局部域,命名空间域,类域.全局域和局部域和C语言类似,后面两种之后再说。

        3、1域作用限定符

        在C语言中,假如全局变量和局部变量命名一致时,我们如何来访问全局变量呢?这里就用到一个运算符,叫做域作用限定符 ::,::左边代表域的名称(不写的话默认全局域),右边代表变量名。

int x = 0;
int main()
{
	int x = 1;
	printf("%d", ::x);// 0
	return 0;
}

        4、命名空间(域)

        刚刚那个namespace就是一个命名空间。那么为什么会有命名空间呢?

        全局的变量会面临一个命名冲突的问题,并且当包含一个头文件时,使用这个头文件中的函数进行命名时,就会出现命名冲突问题。可以理解为:程序员的命名和库的命名冲突了。因此,为了优化这个问题,提出了命名空间。

        编译器默认搜索顺序:1、局部,2、全局,3、命名空间

        4、1命名空间的定义

        定义命名空间的时候需要用到namespace这一关键字,后面接域的名字,再用一对{}来包括就好了。这算是一个全局域。即命名空间里封锁的都是全局的东西

namespace s1
{
	// ...
}

        命名空间域中可以定义变量,函数,类型。

namespace s2
{
	int x = 1;
	int Add(int x, int y)
	{
		return x + y;
	}
	struct Node
	{
		struct Node* node;
		int val;
	};
}

        4、2命名空间可以嵌套

//命名空间嵌套
namespace s3
{
	int x = 2;
	int Add(int x, int y)
	{
		return x + y;
	}
	namespace s4
	{
		int x = 3;
		int Sub(int x, int y)
		{
			return x - y;
		}
	}
}

        4、3命名空间的名称可以重复吗?

        答案是:可以。编译器不会报错。当两个命名空间的名称一样时,编译器会将两个命名空间合并为一个命名空间,但是这两个同名命名空间中的变量,函数,类型名称不能相同,否则就冲突了。

        注意:一个命名空间就定义了一个新的作用域,该命名空间中的所有内容仅限于该作用域。

        4、4命名空间的使用

namespace s2
{
	int x = 1;
	int Add(int x, int y)
	{
		return x + y;
	}
	struct Node
	{
		struct Node* node;
		int val;
	};
}

        4、4、1指定 -- 直接使用

int main()
{
	printf("%d\n", s2::x);
	printf("%d\n", s2::Add(1, 2));
	struct s2::Node phead;
}

        尤其是结构体的使用,看着很别扭。、

        4、4、2展开命名空间(将命名空间的访问权限展开)

        使用using namespace 命名空间名称引入。

        指将命名空间域的访问权展开,使全局可以访问。但是注意:展开后,命名空间相当于一个全局域,所以仍然是局部优先。不要随意展开!!!

using namespace s2;
int main()
{
	printf("%d\n", x);
	printf("%d\n", Add(1, 2));
	struct Node phead;
}

        4、4、3引入命名空间中某个成员

        使用using 命名空间名称 ::成员变量。

using s2::Add;
int main()
{
	printf("%d\n", s2::x);
	printf("%d\n", Add(1, 2));
}

        5、C++输入cin&输出cout

        std是C++标准库的命名空间名,C++将标准库的定义实现都放到这个命名空间中

        使用cout标准输出对象(控制台)(这个c代表控制台consolecin标准输入对象(键盘)时,必须包含< iostream >头文件
以及按命名空间使用方法使用std

        cout和cin是全局流对象endl是特殊的C++符号,表示换行输出(也支持\n换行,因为C++兼容C),他们都包含在包含<
iostream >头文件中。

        <<是流插入运算符(和cout使用),>>是流提取运算符(和cin使用)。

        使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。
C++的输入输出可以自动识别变量类型

        规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用<iostream>+std的方式。

#include<iostream>
using namespace std;

int main()
{
	int i = 0;
	char ch = 0;
	cin >> i>>ch;
	cout << i << endl << ch << endl;
	cout << "hello world"<<endl << "nihao" << endl;
	return 0;
}

        6、缺省参数

        缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实参则采用该形参的缺省值,否则使用指定的实参

        6、1全缺省参数

void Func(int a = 4,int b = 3,int c = 2)
{
	cout << a << endl;
	cout << b << endl;
	cout << c << endl << endl;
}
int main()
{
	Func();//4 3 2
	Func(10, 20, 30);//10 20 30
	Func(10, 20);//10 20 2
	Func(10);//10 3 2
	return 0;
}

        由此可以看出,全缺省参数函数传参时,是从左往右传入。不能间隔传,也不能倒着传。

        没有传参

  • 69
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Dev-C++是一款流行的集成开发环境(IDE),用于C和C++编程。下面是Dev-C++的入门教程: 1. 下载和安装:首先,你需要从Dev-C++官方网站下载并安装最新版本的Dev-C++。安装过程相对较简单,按照提示进行操作即可。 2. 创建新项目:打开Dev-C++后,点击菜单栏上的"File",然后选择"New"来创建一个新项目。在弹出的窗口中,选择"C++ Project"或"C Project",并为项目命名。 3. 编写代码:在项目中的源文件上右键点击并选择"Add new",然后选择"C++ Source"或"C Source"。在弹出的代码编辑器中,你可以编写C或C++代码。 4. 编译和运行:点击菜单栏上的"Execute",然后选择"Compile & Run"来编译和运行你的代码。如果一切顺利,你将在输出窗口中看到"Hello world"的输出。 注意:在编写代码时,你可以使用C++的输出流对象cout来输出文本。在Dev-C++的代码示例中,你会看到类似于"cout<<"Hello world";"这样的代码段。这是C++中一种常用的输出语法。 这就是Dev-C++的入门教学。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Dev-c++入门教程1(模板及使用)](https://blog.csdn.net/zzz209/article/details/109955745)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夹心宝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值