C++中的结构体,C管理进程代码,C++管理进程代码,C语言中的联合体

简介:  1.C++中的结构体 #include<iostream>   struct lstruct {     int num; };   struct MyStruct {     int num;     double db = 10.8;//可以有默认的值     //MySt


1.C++中的结构体

#include<iostream>

 

struct lstruct

{

    int num;

};

 

struct MyStruct

{

    int num;

    double db = 10.8;//可以有默认的值

    //MyStruct sx;//拒绝内部定义自己,也就是说不能够内部指向自己

    MyStruct *pnext;

    MyStruct *phead;

    lstruct  l1;

    void boss()  //可以有方法

    {

    }

};

 

struct MyStructA

{

    int num;

    double db = 10.8;//默认的值

    //MyStruct sx;//拒绝内部定义自己

    MyStruct *pnext;

    MyStruct *phead;

    lstruct  l1;

    void boss()

    {

    }

};

 

struct

{

    int num;

    double db;//默认的值,不能赋初值,否则编译就会出现错误

    MyStruct boss1;

}sx, sy;//匿名结构体不允许初始化

 

void main()

{

    MyStruct s1;//自动管理

    MyStruct *pnew = new MyStruct;//手动

    s1.l1.num;

    //pnew->l1.num;

    (*pnew).l1.num;

    //类型相同可以整体赋值

    //结构体C++风格初始化方式

    MyStruct s2(s1);

    MyStruct *pnew2(new MyStruct);

    MyStructA sa1;

    //MyStruct s3(sa1);C++强类型,必须类型匹配

}

 

void main1()

{

    MyStruct  s1;

    std::cout << s1.db << std::endl;

    sx.boss1.num;//结构体嵌套就是...

    std::cin.get();

}

2.空类

#include<iostream>

//空类占一个字节,表明类存在

//空类有int,4个,

 

class kong

{

public:

    //int num

    void go(int  num)

    {

        std::cout << "锄禾日当午";

    }

};

 

void main()

{

    std::cout << sizeof(kong) << std::endl;

    //  std::cout<< &kong << std::endl;

    kong  kong1;

    //kong1.num = 10;

    std::cout << &kong1 << std::endl;

    std::cin.get();

}

 

3.C语言管理进程

#define  _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include<string.h>

#include<windows.h>

 

//面向过程的模式

//代码重用主要靠函数

 

void open(const char *path, const int mode)

{

    ShellExecuteA(0, "open", path, 0, 0, mode);

}

 

void all()

{

    system("tasklist");

}

 

void closebyname(const char *name)

{

    char cmdstr[100] = { 0 };

    sprintf(cmdstr, "taskkill /f/im %s", name);

    system(cmdstr);

}

 

void closebypid(const int num)

{

    char cmdstr[100] = { 0 };

    sprintf(cmdstr, "taskkill /pid%d", num);

    system(cmdstr);

}

 

void main1()

{

    all();

    open("notepad", 1);

    all();

    Sleep(2000);

    int  num;

    scanf("%d", &num);

    closebypid(num);

    //closebyname("notepad.exe");

    system("pause");

}

 

struct fu

{

    int a;

    int b;

};

 

//a+bi,

struct fu  add(struct fu  fu1, struct fu  fu2)

{

    struct fu  fu3;

    fu3.a = fu1.a + fu2.a;

    fu3.b = fu1.b + fu2.b;

    return fu3;

}

 

void   main3()

{

    //数据可以随便被别人,可以随便被修改

    struct fu  fu1 = { 3, 4 };

    struct fu  fu2 = { 13, 4 };

    fu1.a += 3;

    struct fu  fu3 = add(fu1, fu2);

    printf("%d+%di", fu3.a, fu3.b);

    getchar();

}

4.C++面向对象管理进程

#define  _CRT_SECURE_NO_WARNINGS

#include<iostream>

#include<string>

#include <windows.h>

 

//C++类的继承实现代码重用, C重用  函数

//类的封装实现权限,封装,数据与代码合为一体。C封装主要是函数

//封装可以锁定代码的权限,锁定的数据的权限,避免被随意修改

//类的多态,一个接口根据实际需求完成很多不同的功能

 

class cmduse

{

private:

    char cmduser[100];//用户名

    char cmd[100];//存储指令

public:

    void setuser(const char * name)

    {

        strcpy(cmduser, name);

    }

    char * getuser()

    {

        return this->cmduser;//返回用户名

    }

    void open(const char *path, const int mode)

    {

        ShellExecuteA(0, "open", path, 0, 0, mode);

    }

 

    void all()

    {

        system("tasklist");

    }

 

    void closebyname(const char *name)

    {

        memset(this->cmd, 0, 100);//清空字符串

        sprintf(this->cmd, "taskkill /f/im %s", name);

        system(this->cmd);

    }

 

    void closebypid(const int num)

    {

        memset(this->cmd, 0, 100);//清空字符串

        sprintf(this->cmd, "taskkill /pid%d", num);

        system(this->cmd);

    }

};

 

void main2()

{

    cmduse cmduse1;

    cmduse1.setuser("yincheng");

    std::cout << cmduse1.getuser() << std::endl;

    cmduse1.open("calc", 1);

    cmduse1.open("notepad", 0);

    Sleep(2000);

    cmduse1.all();

    cmduse1.closebyname("calc");

    int pid;

    std::cin >> pid;

    cmduse1.closebypid(pid);//根据编号关闭

 

    std::cin.get();

    std::cin.get();

    //closebypid(100);

}

 

//封装可以实现代码权限,不可以随便调用

class

{

public:

    void seta(int a)

    {

        //接口

        this->a = a;

    }

    int geta()

    {

        return this->a;

    }

    void setb(int b)

    {

        //接口

        this->b = b;

    }

    int getb()

    {

        return this->b;

    }

protected:

 

private:

    int a;

    int b;

    char password[100];

}myab;

 

void main()

{

    //  myab.geta = 3;

    myab.seta(10);

    //封装解决的问题

    //类的,代码与数据,一体化

    //代码的封装,限定代码谁可以执行谁不可以执行的权限

    //数据的封装,防止数据被意外修改

}

5.C++中的联合体

#include<iostream>

 

//union  本质也是一个类,可以内部有函数,

//union,内部数据是共享,不同对象之间是独立的,代码是共享

//union,也具备结构体所有功能

//某些节约内存的类需要用到共用体

union MyUnion

{

    int num;

    double db;

    void go()

    {

    }

};

//内部数据是共享内存,不可以继承

union MyUnionA

{

    int num;

    double db;

    void go()

    {

 

    }

};

 

void main()

{

    std::cout << sizeof(MyUnion) << std::endl;

    MyUnion union1;

    //  union1.db = 10;

    union1.num = 20;

    std::cout << union1.num << std::endl;

    union1.db = 10.9;//时时刻刻共用体仅有一个变量存在

 

    std::cout << union1.num << std::endl;

    std::cin.get();

}

 

 

目录
相关文章
|
3月前
|
C++ Windows
应用程序无法正常启动(0xc0000005)?C++报错0xC0000005如何解决?使命召唤17频频出现闪退,错误代码0xC0000005(0x0)
简介: 本文介绍了Windows应用程序出现错误代码0xc0000005的解决方法,该错误多由C++运行库配置不一致或内存访问越界引起。提供包括统一运行库配置、调试排查及安装Visual C++运行库等解决方案,并附有修复工具下载链接。
1156 1
|
5月前
|
安全 C语言 C++
比较C++的内存分配与管理方式new/delete与C语言中的malloc/realloc/calloc/free。
在实用性方面,C++的内存管理方式提供了面向对象的特性,它是处理构造和析构、需要类型安全和异常处理的首选方案。而C语言的内存管理函数适用于简单的内存分配,例如分配原始内存块或复杂性较低的数据结构,没有构造和析构的要求。当从C迁移到C++,或在C++中使用C代码时,了解两种内存管理方式的差异非常重要。
191 26
|
10月前
|
存储 安全 C语言
C++ String揭秘:写高效代码的关键
在C++编程中,字符串操作是不可避免的一部分。从简单的字符串拼接到复杂的文本处理,C++的string类为开发者提供了一种更高效、灵活且安全的方式来管理和操作字符串。本文将从基础操作入手,逐步揭开C++ string类的奥秘,帮助你深入理解其内部机制,并学会如何在实际开发中充分发挥其性能和优势。
|
5月前
|
API 数据安全/隐私保护 C++
永久修改机器码工具, exe一机一码破解工具,软件机器码一键修改工具【c++代码】
程序实现了完整的机器码修改功能,包含进程查找、内存扫描、模式匹配和修改操作。代码使用
|
6月前
|
C++
爱心代码 C++
这段C++代码使用EasyX图形库生成动态爱心图案。程序通过数学公式绘制爱心形状,并以帧动画形式呈现渐变效果。运行时需安装EasyX库,教程链接:http://【EasyX图形库的安装和使用】https://www.bilibili.com/video/BV1Xv4y1p7z1。代码中定义了屏幕尺寸、颜色数组等参数,利用随机数与数学函数生成动态点位,模拟爱心扩散与收缩动画,最终实现流畅的视觉效果。
860 0
|
12月前
|
存储 网络协议 编译器
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
912 14
|
12月前
|
存储 编译器 C语言
【C语言】结构体详解 -《探索C语言的 “小宇宙” 》
结构体通过`struct`关键字定义。定义结构体时,需要指定结构体的名称以及结构体内部的成员变量。
629 10
|
12月前
|
算法 编译器 C语言
【C语言】C++ 和 C 的优缺点是什么?
C 和 C++ 是两种强大的编程语言,各有其优缺点。C 语言以其高效性、底层控制和简洁性广泛应用于系统编程和嵌入式系统。C++ 在 C 语言的基础上引入了面向对象编程、模板编程和丰富的标准库,使其适合开发大型、复杂的软件系统。 在选择使用 C 还是 C++ 时,开发者需要根据项目的需求、语言的特性以及团队的技术栈来做出决策。无论是 C 语言还是 C++,了解其优缺点和适用场景能够帮助开发者在实际开发中做出更明智的选择,从而更好地应对挑战,实现项目目标。
432 0
|
10月前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
6月前
|
人工智能 机器人 编译器
c++模板初阶----函数模板与类模板
class 类模板名private://类内成员声明class Apublic:A(T val):a(val){}private:T a;return 0;运行结果:注意:类模板中的成员函数若是放在类外定义时,需要加模板参数列表。return 0;
162 0