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



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

}

 

 

时间: 2024-11-23 15:07:53

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

读取PLC中的结构体时,总是提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏

问题描述 读取PLC中的结构体时,总是提示:尝试读取或写入受保护的内存.这通常指示其他内存已损坏,但是,我把string[]改成char[]时,可以读到300个单字符,是数据类型的问题么?usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Wi

c++-时间片轮转调度算法中C++结构体指针空值问题

问题描述 时间片轮转调度算法中C++结构体指针空值问题 // 时间片轮转调度算法.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #include using namespace std; int ArrivalTime[100]; //进程到达时间 int ServiceTime[100]; //进程服务时间 int

C/C++中的结构体

什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制了,即使数据类型和数组大小完全相同. 定义结构体使用struct修饰符,例如: struct test

c-C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么

问题描述 C 语言中返回结构体指针,结果出来了,但是还是出现错误,不知道为什么 解决方案 p 没有初始化,也就是没有分配空间.典型的指针错误,不初始化,指针指向哪里呢? 解决方案二: array *p = new array(); 解决方案三: array p;test(&p); 解决方案四: 当然,使用指针应该首先初始化一个空地址的,否则,很容易发生指针地址错误其次,看了一下你的程序设计,程序本身是定义了一个array的结构体变量,在主函数中却要申请一个指针变量p(它的类型是结构体),一系列操

OC中的结构体变量和结构体指针变量的区别

问题描述 OC中的结构体变量和结构体指针变量的区别 OC中的结构体变量和结构体指针变量的区别?,请写出相同点和不同点 解决方案 指向结构体变量的指针指向结构体变量的指针引用结构体变量中的成员结构体中的指针变量输出 解决方案二: 一般来说结构变量定义的时候就分配了内存空间;但结构体指针,和其它指针一样,只有4个字节的指针大小,在使用时需要先动态的分配内存.

C中的结构体对齐可以把下一个的类型补到前一个???

问题描述 C中的结构体对齐可以把下一个的类型补到前一个??? 解决方案 结构体对齐说的是编译器的事情,不是你定义一个字段然后自己去凑.千万不要从百度百科这种垃圾网站获得信息. 解决方案二: 同一类型的可以合并,很正常, 从对齐看,对其对齐要求是一样的,不冲突 实际上 char,char ,short 也可以合并成 一个int 当 char 8Bits,short16Bits,int32bits 的时候 只有当下个数据, 不在对齐位置的时候, 才会在两个数据中间插入间隙.

c-如何正确的导出动态库中的结构体变量

问题描述 如何正确的导出动态库中的结构体变量 使用开源库封装的dll,它里面的接口需要使用dll中定义的结构体变量作为参数,于是把该变量也一起导出了,但在使用时,对该变量取地址总返回未知的值.大概的代码如下: 头文件定义结构体A,并声明 a变量,另外有一个函数func struct A{}; extern const A a; int func(const A* p ); const A* return_a(); DLL中的 xxx.c文件中定义了a变量和func函数 const A a; in

c++-请问在C++中,结构体数组类型能作为类的数据成员吗?

问题描述 请问在C++中,结构体数组类型能作为类的数据成员吗? 我想让自己构造一个结构体数组来存储记录,结构体数组类型能作为类的数据成员吗? 解决方案 just do it 解决方案二: 可以.实现的时候注意不要出错就可以. 解决方案三: 可以,c++中结构体和类除了默认访问控制符外没什么区别,一个类的对象可以作为另外一个类的成员数据,结构体当然可以 解决方案四: 可以啊,结构体不过是扩展了的int float等等 解决方案五: 当然可以不过我觉得你还不如重新写个class作为专门存储数据 解决

c++-C++中的结构体如何删除

问题描述 C++中的结构体如何删除 在头文件定义了一个结构体 struct Node {int num: char name: Node *p } 如果创建了这样一个结构体 n1,那如何删除这个n1? 解决方案 怎么建的怎么删除呗 malloc对应free new对应delete 解决方案二: 对怎么创建怎么删除,malloc与free对应,new与delete对应.不能混用 解决方案三: 如果你没有用new或者malloc创建这个结构体的对象,那么内存在栈上,不用删除.