自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 C++根据进程名获取进程PID

DWORD GetProcessIdFromName(char *name){HANDLE  hsnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);    if(hsnapshot == INVALID_HANDLE_VALUE)     { &...

2019-07-05 13:33:02 6966 1

原创 链表插入、逆序、遍历

//单链表的建立,把‘a’-‘z’26个字母插入到链表中,并且倒序,还要打印#include #include int c= 0;typedef struct node{ char data; struct node *next;}Node;typedef struct node *Linklist; int Reverse(Linklist L){ Linklist

2018-01-26 22:22:21 395

原创 带头节点的单链表逆序

int Reverse(Linklist L) { Linklist p,q,r; if(L->next == NULL || L == NULL)//空链表 { return 1; } p = L->next; q = p->next;//保存原第2个节 p->next = NULL; //原第一个节点为末节点 while(q != N...

2018-01-26 22:18:31 2061

原创 数据类型越界问题

题目:通过编程实现输出2的1000次方。#include int main() { int a[1000] = {0}; //先定义一个足够大的数组 int i,j,k; a[0] = 1; for(i=0; i<50; i++) //2的1000次方,所以执行1000次 { for(j=0; j<1000; j++)

2018-01-26 13:51:41 1929

原创 单词倒置

题目:编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.#include int main(){ char s[] = {"I am from shanghai"}; char str[100] = {0}; int i, j , k = 1,n = 0; int len

2018-01-26 12:08:59 196

原创 基于tcp搭建客户端

客户端搭建#include #include #include#include#include#include #include #include #define PORT 8888int main(){ int sockfd,ret; struct sockaddr_in server_addr; sockfd = socket(PF_INET,SOCK_STRE

2018-01-16 18:46:49 320

原创 基于tcp搭建服务器

服务器的搭建#include#include#include#include #include #include #include #define PORT 8888int main(){ int sockfd,ret,fd; struct sockaddr_in server_addr; struct sockaddr_in client_addr; printf

2018-01-16 18:43:45 857

原创 c++基础(2)

1.引用  //引用是一个变量的别名, 别名是依赖原名 //普通引用必须要初始化 // 引用是有空间的 4 字节 // 引用的本质是 一个 常指针 // 整型数据占 4 个字节的空间,a 是一个标识符,这个标识符就代表这一块空间 // 对这个标识符操作就相当于操作这块空间 int a = 10; // 给这个 4 字节的空间取

2018-01-16 18:15:25 120

原创 c++基础(1)

一.命名空间// 1、命名空间的定义:namespace 命名空间的名称 {}// 变量、函数、宏定义 namespace Name1{ int a; int add(int a, int b) { return a + b; }#define PI 3.14 // 命名空间的嵌套 namespace Name1_1 { }}namespace Na

2018-01-12 15:24:09 149

原创 初识c++(c++与c语言的区别)

c语言是面向面向过程的程序设计:数据结构+算法,c语言的目的是高效。c++是面向对象的程序设计:由现实世界建立软件模型。c++比c加强的点:1.引入命名空间一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。为了解决合作开发时的命名冲突问题,C++ 引入了

2018-01-08 18:47:43 10032 1

原创 c语言停车场项目

停车场项目需求问题描述:停车场是一个能放 n 辆车的狭长通道,只有一个大门,汽车按到达的先后次序停放。若车场满了,车要停在门 外的便道上等候,一旦有车走,则便道上第一辆车进入。当停车场中的车离开时,由于通道窄,在它后面的车 要先退出,待它走后在依次进入。汽车离开时按停放时间收费。 基本功能要求: (1)建立三个数据结构分别是:停放栈

2017-12-25 20:19:48 1955

原创 c语言通讯录项目

通讯录说明文档(一) 语言:c语言格式: 编号 姓 名 住址 电话 住宅电话 201701 * xxxx 183****5668 33****77要求:使用结构体形式对数据存储功能:使用链表实现增加(在增加人员的过程中有一个自动排序功能,比如按姓名排序)、删除、

2017-12-25 20:13:42 422

原创 Linux进程间通信(2)

一。管道(pipe)  管道是Linux支持的最初IPC方式,管道可分为无名管道,有名管道等。  (一)无名管道,它具有几个特点:  1) 管道是半双工的,只能支持数据的单向流动;两进程间需要通信时需要建立起两个管道;  2) 无名管道使用pipe()函数创建,只能用于父子进程或者兄弟进程之间;  3) 管道对于通信的两端进程而言,实质上是一种独立的文件,只存在于内存中;  4) 数据的读写操作:

2017-12-07 20:25:18 123

原创 Linux进程间通信(1)

Linux进程间通信的方法基本是从UNIX平台继承而来。Linux进程间通信的方法: 1. 管道(pipe):管道是一种半双工的通信方法,数据只能单向流动,而且只能在父子进程间使用。 2. 有名管道(named pipe):有名管道也是半双工通信方式,但不局限于父子进程间的通信。 3. 信号量(semophore):信号量是一种计数器,可以控制多个进程对资源的访问。它通常作为一种锁

2017-12-07 19:23:54 191

原创 Linux进程控制

1.进程的定义进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。2.进程和程序的区别程序是放到磁盘的可执行文件,进程是指程序执行的实例。进程是动态的,程序是静态的;进程是暂时的,程序使长久的;进程与程序组成不同。3.进程的生命周期创建,运行,撤销4.进程的状态执行状态:进程正在占用CPU就绪状态:进程已具备一切条件,正在等待

2017-12-06 20:57:07 322

原创 Linux文件操作

1.linux里一切皆文件,在Linux中对目录和设备的操作都等同于对文件的操作,都是使用文件描述符来进行的。    Linux文件可分为:普通文件,目录文件,链接文件,设备文件。2.文件操作(系统调用,库函数)当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。文件描述符是一个非负的整数,它是一个索引值,

2017-12-06 19:36:19 223 1

原创 c语言题目练习(2)

1.题目:创建单链表并赋值,要求遍历能输出1~9#include #include  struct List{int name;struct List *next;}; typedef struct List *LinkList; void ListInit(LinkList *L){(*L)=(LinkList)malloc(sizeof(

2017-11-27 20:51:30 325

原创 c语言小题目练习

题目1:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。#include int main(){int i,j;for(i=1;i{int sum=0;for(j=1;j{if(i%j==0){sum=sum+j;}}if(sum==i){printf("%

2017-11-21 20:05:57 284

原创 指针中易混淆的点

指针数组和数组指针数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。

2017-11-16 17:03:38 209

原创 数组与指针

数组和指针的区别:数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如果出现a = a+1;这是编译都通不过的错误。而对于一个普通的指针是可以的,再比如有数组char a[];那么再定义一个char *p = a;然后再用p = p+1是合法的,这

2017-11-13 16:22:05 102

原创 初识数组

1.可以使用数组后面第一个元素的地址吗?可不可以查看该地址的值?     可以使用数组后面第一个元素的地址,但不可以查看该地址中的值。2.为什么要小心对待数组后面那些元素的地址呢?  地址分为基地址和地址偏移量,如果程序使用一段地址结构,在基地址处刚好存放着数组a0,基地址无法改变,地址偏移量也不可能是负值,所以位于a0[0]前面的元素这种说法就没有意义了。3.

2017-11-11 19:09:05 135

原创 Linux学习心得(二)

今天学习了gcc编译器和gdb调试工具,初步接触了shell脚本(1)GCC编译器整个编译过程可以分为4个阶段1.预处理:本阶段进行头文件展开2.编译:检查语法,翻译成汇编语言3.汇编:把汇编语言翻译成机器语言4.链接:链接一些库(函数)整个编译过程为:gcc -E test.c -o test.igcc -S test.i -o test.s   gcc -c

2017-11-08 18:30:29 226

原创 Linux学习心得(一)

今天开始接触Linux   与Windows简直完全不同   界面操作都发生了巨大改变 今天先来熟悉一下Linux基本操作1.首先是linux的目录,有些目录是必须的,如:/bin,/dev,/root,/home等;而有些是不必要的,如:/boot,/mnt,/lost+found等。2.linux是针对文件的操作系统,一切皆文件。3.进入目录的指令是cd。基本指令为 cd+空格+目

2017-11-06 13:51:50 1410

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除