<C++>快来精通C++的“Hello world“写法

这篇具有很好参考价值的文章主要介绍了<C++>快来精通C++的“Hello world“写法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

<C++>快来精通C++的“Hello world“写法

1. C++是啥

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。
为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。
因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

C++是可以兼容C语言语法的,它同时也有自己独有的新内容,今天,就来初步了解一下C++。

2. 命名空间

老样子,先从精通C++的“Hello world!“写法开始。

#include<iostream>
using namespace std;
int main()
{
	cout << "Hello world!"<< endl;//endl是换行
	return 0;
   
}

你是否曾经有那么一丢丢的疑惑using namespace std;是干啥的?

稍等,我们再看几个例子,铺垫铺垫:

#include<iostream>
using namespace std;
#include<stdlib.h>//里面有个叫rand的函数

int rand = 0;
int main()
{
    printf("%d\n", rand);
	return 0;
}

<C++>快来精通C++的“Hello world“写法

因为<stdlib.h>里面有个叫rand的函数因此我们定义的变量重名了。

为了解决命名冲突问题,CPP引入namespace命名空间定义

定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员

#include<iostream>
using namespace std;
#include<stdlib.h>//里面有个叫rand的函数

//为了解决命名冲突问题,CPP引入namespace
//同一个域里面不能有重名变量
namespace cpp//命名空间域,这里起名为cpp,本空间与外界空间进行隔离
{ 
    int rand = 0;
}
int main()
{
    printf("%d\n", rand);
	return 0;
}

<C++>快来精通C++的“Hello world“写法

成功通过了,但这里打印的不是0,而是一串数字。因为这里打印的是函数rand的地址,而不是rand变量的大小(因为rand变量被cpp命名空间关起来了,函数rand和变量rand就不在同一个域了,不会有命名冲突问题)。

那如果我想要访问变量rand该怎么做呢?我们引入:: 域作用限定符,访问cpp命名空间里的rand

#include<iostream>
using namespace std;
#include<stdlib.h>//里面有个叫rand的函数

//为了解决命名冲突问题,CPP引入namespace
//同一个域里面不能有重名变量
namespace cpp//命名空间域,这里起名为cpp,本空间与外界空间进行隔离
{ 
    int rand = 0;
}
int main()
{
    printf("%d\n", cpp::rand);//:: 域作用限定符,::前面是空白就默认全局域
	return 0;
}

<C++>快来精通C++的“Hello world“写法

2.1 命名空间定义

1️⃣命名空间中的内容既可以定义变量,也可以定义函数和类型

namespace tyyg // tyyg为命名空间的名称
{
    // 命名空间中的内容,既可以定义变量,也可以定义函数和类型
    int a;//变量
    
    int Add(int left, int right)//函数
    {
   		return left + right;
    }
    
    struct ListNode//类型
    {
        int val;
        struct ListNode* next;
    };
}

2️⃣命名空间可以嵌套使用,例如:

namespace OUT//外
{
    int a;
    int b;
    namespace IN//内
    {
        int c;
        int Sub(int left, int right)
        {
        	return left - right;
        }
    }
}

3️⃣同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。

//data.h
namespace abc
{
	int a = 0;//a还是全局变量,命名空间不影响生命周期,只是把a隔离开了
    namespace data
    {
        struct Node
        {
            int val;
            struct Node* next;
        };
    }
}

//cache.h
namespace abc
{
	int b = 0;
    namespace cache
    {
        struct Node
        {
            int val;
            struct Node* next;
        };
    }
}

int main()
{
    struct abc::data::Node n1;
    n1.val = 1;
    
    struct abc::cache::Node n2;
    n2.val = 3;
    
    return 0;
}

它们在不同的文件中,编译器最后会合成同一个命名空间abc中,为了区分两个Node,我们嵌套了一层命名空间。最后通过::来创建两个不同类型的结构体变量n1和n2。(这里的struct abc::data::Node只是一种类型)

2.2 命名空间使用

如果我想简化一下,不想写abc::,我该怎么改呢?

//data.h
namespace abc
{
	int a = 0;//a还是全局变量,命名空间不影响生命周期,只是把a隔离开了
    namespace data
    {
        struct Node
        {
            int val;
            struct Node* next;
        };
    }
}

//cache.h
namespace abc
{
	int b = 0;
    namespace cache
    {
        struct Node
        {
            int val;
            struct Node* next;
        };
    }
}

//这里的意思是把abc这个命名空间定义的东西放出来
using namespace abc;
int main()
{
    struct data::Node n1;
    n1.val = 1;
    
    struct cache::Node n2;
    struct cache::Node n3;
    struct cache::Node n4;
    struct cache::Node n5;
    n2.val = 3;
    
    return 0;
}

这里要用using namespace abc;这个语句,意思是把abc这个命名空间定义的东西放出来。要按顺序从外到内展开,否则会找不到。另外还能using namespace abc::data;这样只展开一部分,只展开abc里的data,不展开abc里的cache。一般我们最好用什么展开什么,以免又引起重名(好不容易搞个命名空间,一放回到解放前)。

是不是很眼熟?还记得hello world吗,那个using namespace std;也是这个作用。如果我们不加using namespace std;该怎么写?

#include<iostream>
//using namespace std;//把它注释掉
int main()
{
	std::cout << "Hello world!"<< std::endl;//std是C++标准库的命名空间
	return 0;
}

其实还有一种展开的办法:只放出常用的,using std::cout;

#include<iostream>
using std::cout;
int main()
{
	cout << "Hello world!"<< std::endl;
	std::cout << "Hello world!"<< std::endl;
    //放出来的,加不加原本的std::都行。没放出来的(t)如果不加原本的命名空间std::就会报错
	return 0;
}

3. C++的输入和输出

比起C语言,C++有着它特有的输入输出方式。其实在前面我们已经多次使用了,就是cin输入和cout输出

#include<iostream>
using namespace std;
int main()
{
	int a = 0;
	//scanf("%d", &a);
	// >> 流提取运算符
	cin >> a;

	//printf("%d\n", a);
	// << 流插入运算符
	cout << a;
	return 0;
}

说明:
1️⃣ 使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含< iostream >头文件以及std标准命名空间。

⚠️注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;

旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用<iostream>+std的方式。
2️⃣ 使用C++输入输出更方便,不需增加数据格式控制,自动识别类型,比如:整形–%d,字符–%c

#include <iostream>
using namespace std;
int main()
{
    int a;
    double b;
    char c;
    
    cin>>a;
    cin>>b>>c;
    
    cout<<a<<endl;
    cout<<b<<" "<<c<<endl;
    return 0;
}

3️⃣ 如果想要控制浮点数小数点后的位数,建议还是用回C语言的printf吧(C++兼容C语言),cout处理这个会很困难

4️⃣cin,cout会比scanf,printf慢一些,如果做题时追求速度,建议使用scanf,printf

不知不觉,我们都讲到C++了,未来还有更多内容哦
滚来滚去……~(~o ̄▽ ̄)~o 。。。滚来滚去……o~(_△_o~) ~。。。

目前在不断更新<C++语言>的知识总结,已经更新完了<C语言><数据结构>,未来我会系统地更新<Linux系统编程><Linux网络编程><MySQL数据库>等内容。想要系统学习编程的小伙伴可以关注我!文章来源地址https://www.toymoban.com/news/detail-439817.html

到了这里,关于<C++>快来精通C++的“Hello world“写法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C++打印hello world

    首先我们要知道: C++中有一个很重要的东西,那就是面向对象,其中,C++中的打印和输入都是一个对象,而不是像C一样是一个函数,所以打印和输入都有一定的区别 打印是C++最基础的东西,下面我们先放代码,再逐条分析 首先是程序的入口:主函数。他先对于C有一定的区别

    2024年02月02日
    浏览(63)
  • C++ 编程入门(一)—— Hello World

    C++ 是什么 环境搭建 第一个 C++ 程序 本篇结语 C++ 是一种面向对象的计算机程序设计语言,由美国 ATT 贝尔实验室的 Bjarne Stroustrup 在 20 世纪 80 年代初期发明并实现(最初这种语言被称作 “C with Classes” 带类的 C 语言)。它是一种静态数据类型检查的、支持多重编程范式的通

    2024年02月15日
    浏览(55)
  • C++感受6-Hello World 交互版

    变量、常量 输入、输出、流 getline() 函数读入整行输入 Hello() 函数复习 新定义函数 Input() 实现友好的人机交互 还有 “痘痘” 为什么挤不到的分析……   上一节课,我们写了两版“问候”程序。第一版的最大问题是重复的内容比较多,每一次问候都在重复从 cout 到 endl 的代

    2024年04月27日
    浏览(42)
  • C 语言入门:如何编写 Hello World

    C 语言是由 Dennis Ritchie 于 1972 年在贝尔实验室创建的一种通用编程语言。尽管年代久远,它仍然是一款非常流行的语言。它之所以受欢迎的主要原因是它是计算机科学领域的基础语言之一。C 语言与 UNIX 紧密相连,因为它被用于编写 UNIX 操作系统。 为什么要学习 C 语言? 它是

    2024年02月05日
    浏览(56)
  • 多机TCP通讯之hello world(C++)

    TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议,它确保了数据的可靠性、顺序性和流控制。 以下是 TCP 通讯的一些关键特点和概念: 可靠性: TCP 提供可靠的数据传输。它使用确认机制

    2024年02月02日
    浏览(43)
  • C++并发编程学习01——hello concurrent world

    编译 gdb调试 管理线程的函数和类在 thread 中声明,而保护共享数据的函数和类在其他 头文件中声明 每个线程都必须具有一个初始函数(initial function),新线程的执行从这个函数开始。对于应用程序来说,初始线程是main(),但是对于其他线程,可以在 std::thread 对象的构造函数中

    2024年02月11日
    浏览(48)
  • Visual Studio 2022 CMake C++ Hello World

    C++自学精简教程 目录(必读) Visual Studio 2022 安装​​​​​​​ 什么是CMake CMake是跨平台的C/C++工程构建工具。 我们知道, 在Windows上用Visual Studio开发C/C++代码,工程文件是用.vcxproj文件来组织的; 在Linux上用gcc/g++开发C/C++代码,工程文件是用Makefile文件来组织的; 很多时候我

    2024年02月16日
    浏览(52)
  • C语言实例,输出Hello,World的四种函数。

    在C语言中,输出“Hello, World”是学习的第一个例子。它可以帮助程序员了解如何在屏幕上打印文本。下面是几种输出“Hello, World”的方式: 使用printf()函数可以将指定的文本输出到标准输出流stdout。下面是使用printf()函数输出“Hello, World”的例子: 在这个例子中,我们包含了

    2024年02月09日
    浏览(46)
  • Go语言中入门Hello World以及IDE介绍

    您可以阅读Golang教程第1部分:Go语言介绍与安装 来了解什么是golang以及如何安装golang。 Go语言已经安装好了,当你开始学习Go语言时,编写一个\\\"Hello, World!\\\"程序是一个很好的入门点。 下面将会提供了一些有关IDE和在线编辑器的信息,和如何使用Go语言编写并运行一个简单的

    2024年02月07日
    浏览(54)
  • ROS入门教程(二) 用C++ 实现Hello world

    代码在git link Hello world实现流程 无论是C++还是Python其他编程语言,实现流程都是大同小异: 创建工作空间 → 创建功能包 → 编辑源文件 → 编辑配置文件 → 编译并执行 step1.创建工作空间 Ctrl+Alt+T打开终端分别输入:【在主目录下创建工作空间】 其中helloworld_ws为我们命名的

    2023年04月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包