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();

}

 

 

目录
相关文章
|
2月前
|
消息中间件 Unix Linux
【C语言】进程和线程详解
在现代操作系统中,进程和线程是实现并发执行的两种主要方式。理解它们的区别和各自的应用场景对于编写高效的并发程序至关重要。
86 6
|
3月前
|
算法 安全 C++
提高C/C++代码的可读性
提高C/C++代码的可读性
90 4
|
2月前
|
算法 编译器 C语言
【C语言】C++ 和 C 的优缺点是什么?
C 和 C++ 是两种强大的编程语言,各有其优缺点。C 语言以其高效性、底层控制和简洁性广泛应用于系统编程和嵌入式系统。C++ 在 C 语言的基础上引入了面向对象编程、模板编程和丰富的标准库,使其适合开发大型、复杂的软件系统。 在选择使用 C 还是 C++ 时,开发者需要根据项目的需求、语言的特性以及团队的技术栈来做出决策。无论是 C 语言还是 C++,了解其优缺点和适用场景能够帮助开发者在实际开发中做出更明智的选择,从而更好地应对挑战,实现项目目标。
119 0
|
4月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
105 10
|
4月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
630 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
5月前
|
C++
2合1,整合C++类(Class)代码转换为MASM32代码的平台
2合1,整合C++类(Class)代码转换为MASM32代码的平台
|
5月前
|
存储 算法 C++
【C++核心】结构体、共用体详解
这篇文章详细讲解了C++中结构体和共用体的概念、定义、使用场景和案例,包括结构体的创建、数组、指针、嵌套、函数参数传递,以及共用体的特点和应用实例。
68 4
|
4月前
|
C语言 C++
实现两个变量值的互换[C语言和C++的区别]
实现两个变量值的互换[C语言和C++的区别]
48 0
|
5月前
|
网络协议 C语言
C语言 网络编程(十三)并发的TCP服务端-以进程完成功能
这段代码实现了一个基于TCP协议的多进程并发服务端和客户端程序。服务端通过创建子进程来处理多个客户端连接,解决了粘包问题,并支持不定长数据传输。客户端则循环发送数据并接收服务端回传的信息,同样处理了粘包问题。程序通过自定义的数据长度前缀确保了数据的完整性和准确性。
|
5月前
|
Linux C语言
C语言 多进程编程(三)信号处理方式和自定义处理函数
本文详细介绍了Linux系统中进程间通信的关键机制——信号。首先解释了信号作为一种异步通知机制的特点及其主要来源,接着列举了常见的信号类型及其定义。文章进一步探讨了信号的处理流程和Linux中处理信号的方式,包括忽略信号、捕捉信号以及执行默认操作。此外,通过具体示例演示了如何创建子进程并通过信号进行控制。最后,讲解了如何通过`signal`函数自定义信号处理函数,并提供了完整的示例代码,展示了父子进程之间通过信号进行通信的过程。

热门文章

最新文章

相关实验场景

更多