2025.1.7(c++基础知识点)

作业(练习)

练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试

要求使用new和delete完成

#include <iostream>

using namespace std;

//要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、
//成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试
double *shengqin()          //空间申请函数
{
    double *ptr = new double[5]{-1,-1,-1,-1,-1};
     return ptr;
}

void release(double *ptr)   //释放空间
{
    delete []ptr;
    ptr = NULL;
}

void enter(double *ptr)     //成绩录入功能
{
    int i=0;
    while(i!=5)
    {
        cout<<"输入成绩:第"<<i<<"位"<<endl;
        double a;
        cin>>a;
        ptr[i] = a;
        i++;
    }
}

void asort(double *ptr)     //升序排序
{
    for(int i=0;i<(5-1);i++)
    {
        int m=i,b;
        bool c = 0;
        b=ptr[i];
        for(int j=0;j<5;j++)
        {
            if(ptr[j]<b)
            {
                m=j;
                c = 1;
            }
        }
        //交换
        if(c==1)
        {
            int temp1;
            temp1 = ptr[i];
            ptr[i] = ptr[m];
            ptr[m] = temp1;
        }
    }
    cout<<"交换完成:\t"<<'\t'<<endl;
}

void myprintf(double *ptr)
{
    cout<<"成绩如下:"<<endl;
    for(int i=0;i<5;i++)
    {
        cout<<ptr[i]<<endl;
    }
}

int main()
{
    double *ptr = shengqin(); //空间申请
    enter(ptr);             //成绩录入
    myprintf(ptr);

    asort(ptr);             //升序排序
    myprintf(ptr);          //输出

    release(ptr);           //释放空间
    ptr = NULL;

    return 0;
}

笔记

一、C++的引入

1.1 C++的介绍

        开发者:本贾尼---斯特劳斯特鲁普

        Simula语言:被称为世界上第一个引入类体系(面向对象)的语言

        Algol:研究的是关于算法结构

        贝尔实验室:改进C语言

1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C++。 C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。

Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“new C”,之后被称为“C with Class”。 C++被视为C语言的上层结构,1983年Rick Mascitti建议使用C++这个名字,就是源于C语言中的“++”操作符(变量自增)。

        而且在共同的命名约定中,使用“++”以表示增强的程序。

        支持面向对象编程、泛型编程和过程化编程。

        编程领域广泛:常用于系统开发,引擎开发等应用领域,是最受广大程序员喜爱的编程语言之一。

        历史:“C with Class”阶段,C语言基础上的特征主要有:类及派生类、共有和私有成员、构造函数和析构函数、友元、内联函数、赋值运算符的重载,等等。

        1985年1.0版新增加:虚函数的概念、函数和运算符的重载、引用、常量,等等。

        1989年2.0版新增加:类的保护成员、多重继承、对象的初始化与赋值的递归机制、抽象类、静态成员函数、const成员函数,等等。

1.2 C++属于半面向过程半面向对象编程语言

面向过程程序设计(Procedural Programming)和面向对象程序设计(Object-Oriented Programming, OOP)是两种常见的编程范式,它们各有特点和适用场景。

1> 面向过程:

        面向过程程序设计是一种编程范式,它侧重于编写一系列计算步骤或过程的代码,每个过程都可以完成特定的任务。在这种范式中,程序被视为一系列函数的集合,数据在函数之间传递。

        主要特点包括:

        结构化:程序被分解为可重用的函数或过程。

        功能划分:每个函数负责一个具体的任务。

        顺序执行:程序按照代码的顺序执行操作。

        局部变量和全局变量:数据通过参数传递给函数,函数内部通常使用局部变量,也可以使用全局变量。 面向过程编程的典型语言包括C语言。

2> 面向对象:

        面向对象程序设计是基于“对象”的概念,其中对象是数据和操作数据的方法的集合。这种范式强调将现实世界的实体作为对象进行模拟,每个对象都可以接收消息、处理数据和发送消息到其他对象。

        主要特点包括:

        封装:隐藏对象的内部状态和实现细节,只暴露有限的操作接口。

        继承:允许新的对象类继承现有对象类的属性和方法。

        多态性:允许不同类的对象对同一消息做出响应。

        对象实例:程序定义为对象的集合,每个对象都可以具体实例化。

面向对象编程的典型语言包括Java、C++和Python。

3> 比较

        维护性:面向对象程序设计通常更易于维护和扩展,因为它强调封装和模块化。

        复用性:面向对象程序设计通过继承和多态提高代码复用性。

        开发效率:面向对象程序设计在处理复杂系统时,可以更快地开发,因为它提供了更多高级抽象。

1.3 C++是对C的扩充

        1> C++是对C语言的扩充,C语言的所有语法及函数,C++都能继续使用,并且在该基础上进行了扩充

        2> C语言的编译器是gcc,而C++的编译器是g++,并且g++编译器比gcc编译器更加严格

        3> C++程序的后缀一般为 .cpp .cxx .cc .C .hpp

        4> C++中的头文件,一般不以.h结尾,C++中的头文件名,就是类名

        5> C语言的头文件,在C++中依然可以使用,但是C++对C语言的头文件进行了二次封装

        #include -----> #include

        #include -----> #include

#include<stdio.h>      //在g++编译器中,如果没有加头文件,会直接报错

int main(int argc, const char *argv[])
{
    printf("hello a\n");

    int num = 520;          //定义一个普通整形变量
    void * vptr = &num;

    char * cptr = (char *)vptr;      //将万能指针转换为char*的指针,g++编译器要求必须强转
    
    return 0;
}

二、第一个C++程序

2.1 在qt_creator中创建一个C++项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值