自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hello World

zm小菜鸟

  • 博客(30)
  • 资源 (4)
  • 收藏
  • 关注

原创 设置a的bit 3

给定一个整型变量a,写两段代码,第一个设置a的bit 3,第二个清除a 的bit 3。在以上两个操作中,要保持其它位不变。    #define BIT3 (0x1 static int a;void set_bit3(void){    a |= BIT3;}void clear_bit3(void){    a &= ~BIT3;}

2016-12-31 00:02:48 4069

原创 补码 输出

请写出输出结果     4294967285,-128        unsigned short A = 10;  printf("~A = %u\n", ~A);  char c=128;  printf("c=%d\n",c);解析:~A =0xfffffff5,int值 为-11,但输出的是uint。所以输出4294967285第二题,c=0x10,输出的是in

2016-12-29 23:24:34 912

原创 makefile作用

makefile在开发一个系统时,一般是将一个系统分成几个模块,这样做提高了系统的可维护性,但由于各个模块间不可避免存在关联,所以当一个模块改动后,其他模块也许会有所更新,当然对小系统来说,手工编译连接是没问题,但是如果是一个大系统,存在很多个模块,那么手工编译的方法就不适用了。为此,在Linux系统中,专门提供了一个make命令来自动维护目标文件,与手工编译和连接相比,make命令的优点

2016-12-28 23:06:30 1113

原创 用函数判断大小端字节序

最近做的C面试题,总能碰到判断大端小端的问题,可想而知,这个知识点还蛮重要的。        所谓大端就是指高位值在内存中放低位地址,所谓小端是指低位值在内存中放低位地址。       比如0x12345678在大端机上是12345678,在小端机上是78564312,而一个主机是大端还是小端要看cpu类型以及运行在上面的操作系统。同一款cpu在不同的操作系统使用的大小端情况是不同的。当然

2016-12-27 22:25:13 1929 3

原创 结构体变量的引用和赋值

结构体变量的引用和赋值 在今天之前,一直以为结构体变量的两种引用和赋值方法是可以随便换的,但其实并不是这样,想想也是,要不然干嘛定义两种方法,太浪费了啊回归正题,结构体变量的引用和赋值,有两种形式,一种是用符号“.”,玲一种是用符号“->”一般结构体变量用“.”,结构体指针变量用“->” 举例:一般结构体变量struct msg{ int cmd;

2016-12-26 09:04:20 12709 1

原创 通讯录(链表+文件实现)+ 反思

最近,帮别人改通讯录(链表+文件实现),大概是自己学的不够通透,曾经犯过的错误还是继续犯着。。。记录下来,警戒自己。#include #include #include #include #define LEN sizeof(person)struct stu /*定义结构*/{ char name[20]; /*姓名*/ char email[

2016-12-25 13:06:49 768

原创 打印一个空心正方形

请以尽量高效的方法用”*”打印出一个空心正方形,num为边长#include int main(){ int x,y,num; printf("please input the num:\n"); scanf("%d",&num); for(x = 0; x < num; x++) { for(y = 0 ; y < num; y

2016-12-25 00:28:46 5817 1

原创 Setsockopt()函数用法

Setsockopt()函数用法 在聊天室项目中,构建服务器通信模型时,用到了setsockopt()函数,上网找了些关于这个函数的详解,稍作整理如下:1.       关闭套接字后想继续重用该socket(一般执行closesocket后,不会立即关闭,会经历TIME_WAIT的过程):BOOLbReuseaddr=TRUE;setsockopt(s,SOL_SOCKET,S

2016-12-23 12:10:19 454

原创 Linux 交换文件 恢复非正常关闭的文件

今天,做聊天室项目是,误关闭了正在编辑的一个终端,刚码的代码还没来得及保存,再次打开就变成了之前的样子,郁闷半天,发现貌似可以恢复,立马百度,简单的一个操作,果然恢复了,好兴奋!再次打开非正常关闭的文件时,会出现下面的提示:E325: 注意发现交换文件 ".exportcert.cpp.swp"            所有者: liuchuanliang    日期: Th

2016-12-22 13:00:06 5024

原创 linux 密码输入回显星号

在linuc中,使用getch()很麻烦,以下是我搜集到的密码输入回显星号的代码,亲测好用!#include#include#include#include#include#include int getch(){ int c=0; struct termios org_opts, new_opts; int res=0; //----- store old s

2016-12-21 13:45:51 1999

原创 多进程和多线程的区别

多进程和多线程的区别建立在上一篇进程与线程的区别基础上l  线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。进程资源分配的最小单位,是程序的一次执行。 l  线程有自己的堆栈和局部变量,但线程没有单独的地址空间,一个线程死掉就等于整个进程死掉。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,所以多进程的程序要

2016-12-20 12:06:16 340

原创 进程和线程的区别

进程和线程的区别(1)      进程资源分配的最小单位,是程序的一次执行。                线程是cpu调度的最小单位,可以理解为进程中执行的一段程序片段   (2)        进程间是独立的,一个程序崩溃后,在保护模式下不会对其他进程产生影响。同一进程所产生的线程共享同一内存空间,一个线程挂掉会导致整个进程挂掉;   (3)         同一进程中两段

2016-12-19 14:21:30 229

原创 青蛙跳台阶——斐波纳契数列

(1)一只青蛙一次可以跳上 1 级台阶,也可以跳上2 级。求该青蛙跳上一个n 级的台阶总共有多少种跳法。分析:1)当n = 1, 只有1中跳法;当n = 2时,有两种跳法;当n = 3 时,有3种跳法;当n = 4时,有5种跳法;当n = 5时,有8种跳法;.......        规律类似于Fibonacci数列把n级台阶时的跳法记为f(n),当n>2时,第一

2016-12-18 23:26:23 777

原创 udp如何实现可靠性传输?

udp如何实现可靠性传输?         UDP它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。         传输层无法保证数据的可靠传输,只能通过应用层来实现了。实现的方式可以参照tcp可靠性传输的方式,只是实现不在传输层,实现转移到了应用层。

2016-12-18 00:04:45 1310

原创 进程的死锁

进程的死锁 死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。  死锁会带来的后果:1.        使进程得不到正确的结果,处于死锁的进程得不到所需的资源,不能向前推进,顾得不到结果。2.        使资源利用率降低,处于

2016-12-17 00:59:58 784

转载 关键字的作用

下面几个关键字的作用,其实之前也整理过,这次再放上来是想强调一下,毕竟,就如下文所说,回答不出这几个问题的人是不会被雇佣的。Static关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2) 在模块内(但在函数体外),一个被声明为静态的

2016-12-15 21:12:01 1939

原创 strlen sizeof 的区别

Strlen sizeof 的区别 1.       Sizeof是运算符,strlen是函数2.       sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。3.        strlen只能用char*做参数,且必须是以''\0''结尾的,而sizeof可用类型做参数,还可用

2016-12-14 23:58:25 425

原创 C语言 宏定义相关

C语言 宏定义相关注意点1)    #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)在宏中小心地把参数用括号括起来。2)懂得预处理器将为你计算常数表达式的值,不必计算出实际的值。3) 如果,意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。  1.   用预处理指令#define声明一个

2016-12-14 00:05:52 275

原创 字符串常量

写出下列程序的输出结果char* s="AAA";\printf("%s",s);s[0]='B'; printf("%s",s); 正确答案:AAA段错误 "AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA";然后又因为是常量,所以对是s[0]的赋值操作是不合法的。编译能够通过,但是运行期间会发生

2016-12-12 20:19:51 8648

原创 聊天室项目(二)界面的搭建

为了激起做聊天室项目的激情,我决定第一步通过printf函数的趣味用法,写一个简单的欢迎进入的界面。简单介绍一下,printf函数的用法如何用printf打印信息我就不介绍了,我相信大家都很熟息了吧,就来讲讲如何打印出来的信息富有色彩格式:printf("\033[字背景颜色;字体颜色m字符串\033[0m" );printf("\033[41;32

2016-12-11 23:53:41 885

原创 各种数据类型与零值比较

1 布尔变量与零值比较【规则1】不可将布尔变量直接与TRUE、FALSE或者1、0进行比较。根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRUE的值究竟是什么并没有统一的标准。例如Visual C++ 将TRUE定义为1,而VisualBasic则将TRUE定义为-1。假设布尔变量名字为flag,它与零值比较的标 准if语句如下:if

2016-12-10 09:37:22 2906 1

原创 网络编程

1.在以太网中,工作站在发数据之前,要检查网络是否空闲,只有在网络不阻塞时工作站才能发送数据,是采用了( )机制正确答案: D   你的答案: B D (错误)iptcpICMP数据侦听与冲突控制CSMA/CD 2. A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向B机器80端口发送SYN包,会收到何种类型的回包?正确答案: D   你的答案: A

2016-12-09 23:59:36 396

原创 输出蛇形代码

1.  编写一个程序,输出类似的蛇形代码:1  2  3  4  516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9 #include #include int main(){int n;int x,y,round;//a[x][y],x是二维数组的第一个下标,y是二维数组的第二个下标,//rou

2016-12-09 00:10:12 444

原创 合并两个递增的链表

题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。方法一:递归 : 要注意递归结束的条件及代码的鲁棒性方法二:非递归。需要较多的指针方法一Link MergeList(Link head1,Link head2){ if(head1 == NULL) { return head1; } else

2016-12-07 09:34:00 658

原创 strstr函数 自己实现

实现自己的strstr函数:返回主串中子字符串的位置后的所有字符。如:主串“12345678”,字串“45”,函数返回“45678”#include //#include#includeconst char* strstr(const char *src, const char *dst) { //入口参数检查 assert

2016-12-06 01:25:16 3043 1

原创 网络编程知识巩固(二)

(一)补充:协议分层(面试热点)1.    物理层: RJ45 、 CLOCK 、 IEEE802.3 (中继器,集线器,网关) - 2.    数据链路: PPP 、 FR 、 HDLC 、 VLAN 、 MAC (网桥,交换机) - 3.    网络层: IP 、 ICMP 、 ARP 、 RARP 、 OSPF 、 IPX 、 RIP 、 IGRP 、(路由器) - 4.

2016-12-06 00:20:25 310

原创 网络编程知识巩固(一)

网络编程知识巩固一.理论知识1.       TCP/IP的分层模型 2. IP地址分类1. A类地址 A类地址的表示范围为:0.0.0.0~126.255.255.255,默认网络掩码为:255.0.0.0;A类地址分配给规模特别大的网络使用。A类网络用第一组数字表示网络本身的地址,后面三组数字作为连接于网络上的主机的地址。分配给具有大量主机(直接个人

2016-12-05 01:04:09 267

原创 用串口UART0显示时钟

#include #define rled P1_0#define gled P1_1/*变量定义和赋值*******************************/char time[3]={10,44,55};    //时间初值char recdata[10];           //串口接收到的数据char senddata[10]="00:00:00  "

2016-12-04 00:51:56 4067

转载 蓝桥杯 翻硬币(贪心)

问题描述小明正在玩一个“翻硬币”的游戏。桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零)。比如,可能情形是:**oo***oooo如果同时翻转左边的两个硬币,则变为:oooo***oooo现在小明的问题是:如果已知了初始状态和要达到的目标状态,每次只能同时翻转相邻的两个硬币,那么对特定的局面,最少要翻动多少次呢?我们约定:把翻动相

2016-12-03 00:04:50 284

原创 C练习(六)

标题:错误票据某涉密单位下发了某种票据。并要在年终所有收回。每张票据有唯一的ID号。全年全部票据的ID号是连续的。但ID的開始数码是随机选定的。由于工作人员疏忽。在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。如果断号不可能发生在最大和最小号。

2016-12-01 21:43:13 382

C语言详解.mmap

C语言 要点汇总

2017-06-06

QT详解与实例

QT详解与实例

2017-04-25

ARM初识.mmap

ARM基础 S3C2451控制器简要介绍 启动代码分析

2017-04-23

C语言概述 思维导图

用思维导图清晰整理C语言概述 十分实用!!!

2017-04-10

空空如也

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

TA关注的人

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