栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 基础与深度分析 Chapter1 C++初探

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 基础与深度分析 Chapter1 C++初探

文章目录
  • 从Hello World谈起
  • 系统 I/O
  • 猜数字与控制流
  • 结构体与自定义数据类型

从Hello World谈起

#include 

int main()
{
    std::cout << "Hello world" << std::endl;
}
#include 

void fun(const char* pInfo)
{
    std::cout << pInfo << std::endl;
}

int main()
{
    fun("Hello world");
    fun("Hello China");
}

函数可以被反复调用。
void表示这个fun函数,不需要任何的返回值。

main是一个非常特殊的函数,它是由系统进行调用的,是整个程序的入口,main通过函数名调用不同的函数。c++必须有一个main,底层操作系统调用c++,最开始调用的函数就是main。main的返回值会返回操作系统。为什么要有返回值,一个程序运行可能会出错,我们要通过返回值看是否成功。0表示是否成功。不成功,会有各种各样的问题,成功就返回0.
c++如果不是void的函数,必须要返回相应的类型。main例外,如果不写return,默认返回0.
main函数的返回类型一定是int。其他函数返回类型是千差万别的。
另一种写法


语句块


告诉读者,这个形参作为一个占位符。
形参(形式参数)列表:函数名后面的()内容。

系统 I/O

include,既可以使用<>,也可以使用"“。区别在于”“,系统会在当前目录下去查找头文件。如果用的是<>,系统会从整个的操作系统的环境变量中的库去找。如果是我们工程自己写的头文件,我们用”",一些cpp标准库提供的,我们使用<>。自己的头文件,一般有后缀.h等。标准库一般没有后缀。

cin中的c:character。
输入流有1个,输出流有很多个。
输入流用户通过键盘输入,输出通常是输出到屏幕上。

int main()
{
    int x;
    std::cout << "How old are you:";
    std::cin >> x;
    std::cout << "You are " << x;
}

cerr和clog的区别在于是否立即刷新缓冲区。一个个字符输出效率比较低,所以一般会先输出到缓冲区,一个缓冲区一般包括64k或者多少个字节。当缓冲区满了的时候,我们会一次性的将内容输出到屏幕或者文件。如果程序中有bug,又没有及时刷新缓冲区,那么我们就无法精确定位到哪里出了问题。所以虽然刷新缓冲区会降低效率,但是我们还是希望及时的刷新缓冲区。
cerr是立即刷新缓冲区(是自动的),clog不是立即刷新。如果我们自己是手动操作刷新缓冲区,需要使用std::flush或者std::endl(加入了自动换行).
通常情况,只有在必要的时候,使用endl。

名字空间,防止名字冲突。

#include 

// function

namespace NameSpace1 
{
    void fun()
    { }
}
namespace NameSpace2
{
    void fun()
    { }
}

int main()
{
    NameSpace1::fun();
    NameSpace2::fun();
}
int main()
{
    using namespace NameSpace1;
    fun();
}
int main()
{
    namespace ns1 = NameSpace1;
    ns1::fun();
}

我们可以通过namespace自己定义一些名字空间。std是cpp标准的名字空间,标准库。

名称改变name mangling。

filt -t。是demangling。解改变。

#include 
int main(int argc, char const *argv[])
{
    
    std::cout << "Hello Wei" << std::endl;
    int x = 1;
    printf("I have %d catn", x);
    return 0;
}

猜数字与控制流

#include 
int main(int argc, char const *argv[])
{
    int x = 42;
    std::cout << "Please input a number:" << std::endl;

    int y = 0;
    std::cin >> y;

    if (y == 42)
    {
        std::cout << "Right" << std::endl;
    }
    else
    {
        std::cout << "Wrong" << std::endl;
    }
    
}

左值是可以放在等号左边的,右值是放在等号右边的。

42是一个常量,不能做左值。y是一个变量,是一个右值。

#include 
int main(int argc, char const *argv[])
{
    int x = 42;
    int y = 0;
    while (x != y)
    {
        std::cout << "Please input a number : " << std::endl;
        std::cin >> y;
    }
    
}

#include 
int main(int argc, char const *argv[])
{
    int x = 42;
    int y = 0;
    while (true)
    {
        std::cout << "Please input a number : " << std::endl;
        std::cin >> y;
        if (x == y)
        {
            std::cout << "Right" << std::endl;
            break;
        }
    }
    
}

结构体与自定义数据类型

#include 
struct Point
{
    
    int x;
    int y;
};

void fun(Point p)
{
    p.x;
    p.y;
}

int main(int argc, char const *argv[])
{
    Point p;
    p.x;
    p.y;
}


使用Point表示一个点,比传入fun(x,y)有更清晰的表达。通过.操作元素。

#include 
struct Point
{
    
    int x;
    int y;

    void IncX()
    {
        x += 2;
    }
};



int main(int argc, char const *argv[])
{
    Point p;
    p.x = 10;
    p.IncX();
    std::cout << p.x << " " << p.y << std::endl;
}

将函数引入struct,更像是一个类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/949923.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号