- 博客(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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人