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

时间:2022-09-05 18:08:07


1.C++中的结构体

#include<iostream>

 

structlstruct

{

   intnum;

};

 

structMyStruct

{

   intnum;

   doubledb = 10.8;//可以有默认的值

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

   MyStruct *pnext;

   MyStruct *phead;

   lstruct l1;

   voidboss() //可以有方法

   {

   }

};

 

structMyStructA

{

   intnum;

   doubledb = 10.8;//默认的值

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

   MyStruct *pnext;

   MyStruct *phead;

   lstruct l1;

   voidboss()

   {

   }

};

 

struct

{

   intnum;

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

   MyStructboss1;

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

 

voidmain()

{

   MyStructs1;//自动管理

   MyStruct *pnew = newMyStruct;//手动

   s1.l1.num;

   //pnew->l1.num;

   (*pnew).l1.num;

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

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

   MyStructs2(s1);

   MyStruct *pnew2(newMyStruct);

   MyStructAsa1;

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

}

 

voidmain1()

{

   MyStruct s1;

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

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

   std::cin.get();

}

2.空类

#include<iostream>

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

//空类有int,4个,

 

classkong

{

public:

   //int num

   voidgo(int num)

   {

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

   }

};

 

voidmain()

{

   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>

 

//面向过程的模式

//代码重用主要靠函数

 

voidopen(constchar *path,constintmode)

{

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

}

 

voidall()

{

   system("tasklist");

}

 

voidclosebyname(constchar *name)

{

   charcmdstr[100] = { 0 };

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

   system(cmdstr);

}

 

voidclosebypid(constintnum)

{

   charcmdstr[100] = { 0 };

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

   system(cmdstr);

}

 

voidmain1()

{

   all();

   open("notepad", 1);

   all();

   Sleep(2000);

   int num;

   scanf("%d", &num);

   closebypid(num);

   //closebyname("notepad.exe");

   system("pause");

}

 

structfu

{

   inta;

   intb;

};

 

//a+bi,

structfu add(structfu fu1,structfu fu2)

{

   structfu fu3;

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

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

   returnfu3;

}

 

void  main3()

{

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

   structfu fu1 = { 3, 4 };

   structfu fu2 = { 13, 4 };

   fu1.a += 3;

   structfu 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封装主要是函数

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

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

 

classcmduse

{

private:

   charcmduser[100];//用户名

   charcmd[100];//存储指令

public:

   voidsetuser(constchar *name)

   {

       strcpy(cmduser,name);

   }

   char *getuser()

   {

       returnthis->cmduser;//返回用户名

   }

   voidopen(constchar *path,constintmode)

   {

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

   }

 

   voidall()

   {

       system("tasklist");

   }

 

   voidclosebyname(constchar *name)

   {

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

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

       system(this->cmd);

   }

 

   voidclosebypid(constintnum)

   {

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

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

       system(this->cmd);

   }

};

 

voidmain2()

{

   cmdusecmduse1;

   cmduse1.setuser("yincheng");

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

   cmduse1.open("calc", 1);

   cmduse1.open("notepad", 0);

   Sleep(2000);

   cmduse1.all();

   cmduse1.closebyname("calc");

   intpid;

   std::cin >> pid;

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

 

   std::cin.get();

   std::cin.get();

   //closebypid(100);

}

 

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

class

{

public:

   voidseta(inta)

   {

       //接口

       this->a = a;

   }

   intgeta()

   {

       returnthis->a;

   }

   voidsetb(intb)

   {

       //接口

       this->b = b;

   }

   intgetb()

   {

       returnthis->b;

   }

protected:

 

private:

   inta;

   intb;

   charpassword[100];

}myab;

 

voidmain()

{

   // myab.geta = 3;

   myab.seta(10);

   //封装解决的问题

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

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

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

}

5.C++中的联合体

#include<iostream>

 

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

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

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

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

unionMyUnion

{

   intnum;

   doubledb;

   voidgo()

   {

   }

};

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

unionMyUnionA

{

   intnum;

   doubledb;

   voidgo()

   {

 

   }

};

 

voidmain()

{

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

   MyUnionunion1;

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

}