
C语言
SuGuolin
这个作者很懒,什么都没留下…
展开
-
结构和联合
数组:相同类型的元素的集合。数组元素可以通过下标访问,因为数组的元素长度相同。结构体:结构各个成员可能具有不同的类型。结构声明在声明结构时,必须列出它包含的所有成员。struct { int a; char b; float c;}x;struct{ int a; char b;...原创 2016-12-10 18:13:04 · 593 阅读 · 0 评论 -
\n与\n\r的区别
换行(\n)就是光标下移一行却不会移到这一行的这一行的开头回车(\r)就是回到当前行的开头却不会下移一行按键后会执行“\n\r”,这样就是看到的一般意义的回车了,所以在用十六进制查看方式看一个文本,就会在行尾发现“\n\r”。Tab是制表符,就是“\t”,作用是预留8个字符的显示宽度,用于对齐。引申:“\n”与‘\n’的区别“\n”的是一个字符串,该字符串以‘/原创 2017-03-05 11:27:46 · 1215 阅读 · 0 评论 -
printf()函数是否有返回值
有。printf函数的一般形式为int printf(const char) * format,[argument]),它返回一个int,表示被打印的字符数。#includeint main(){ int i=4321; printf("%d\n",printf("%d\n",printf("%d\n",i))); return 0;}输出:432原创 2017-03-05 11:58:18 · 1011 阅读 · 0 评论 -
C语言的关键字有几个
C语言有32个关键字,初学者比较容易忽略的有union 联合体enum 声明枚举类型register 声明寄存器变量goto 无条件跳转语句sizeof 计算对象所占的空间大小原创 2017-03-15 18:15:47 · 3033 阅读 · 0 评论 -
C语言case关键字后面的值有什么要求?
case后面只能是整型或字符型的常量或常量表达式原创 2017-03-15 18:57:29 · 15670 阅读 · 0 评论 -
数据转换宏
#define LB(x) ((unsigned char)(x))#define HB(x) ((unsigned char)(x>>8))#define DEC2BCD(x) ((((x/10)#define BCD2DEC(x) ((((x>>4)&0x0f)*10)+(x&0x0f))#define BCD2BIN(n) (((((n) >> 4) & 0x0F原创 2017-06-21 10:13:08 · 686 阅读 · 0 评论 -
uchar a=2,b=254;a-b=?
uchar a=2,b=254;a-b=4;254=-2; -(-2)=+2;255=-1; +1=-255原创 2017-06-10 10:29:11 · 1376 阅读 · 0 评论 -
3DES加密
#include "des.h"#include /************************************************************************//* *//* Module title:原创 2017-09-07 22:03:48 · 1825 阅读 · 4 评论 -
空结构体多大?
struct student{}stu;sizeof(stu)的值等于1.编译器为每个结构体类型数据至少预留1个byte原创 2017-10-23 08:48:07 · 488 阅读 · 0 评论 -
C语言 二维数组 指针运算
*(*(p+i)+C)=a[i][C]原创 2018-03-13 09:11:41 · 749 阅读 · 0 评论 -
DES 源码
typedef unsigned char UC;UC sboxvalue[8][4 * 16] = { 0xe, 0x4, 0xd, 0x1, 0x2, 0xf, 0xb, 0x8, 0x3, 0xa, 0x6, 0xc, 0x5, 0x9, 0x0, 0x7, 0x0, 0xf, 0x7, 0x4, 0xe, 0x2, 0xd, 0x1, 0xa, 0x6, 0xc, 0xb...原创 2018-07-27 10:53:22 · 1354 阅读 · 0 评论 -
epoll和select的例程代码
epoll.c#include<stdio.h>#include<stdlib.h>#include<fcntl.h>#include<sys/stat.h>#include<sys/types.h>#include<sys/epoll.h>int main(){ int epollfd = ...转载 2019-02-14 18:38:17 · 327 阅读 · 1 评论 -
ntohl()、htonl()函数
ntohl()将一个无符号长整形数从网络字节顺序转换为主机字节顺序, ntohl()返回一个以主机字节顺序表达的数。ntohl()返回一个以主机字节顺序表达的数。htonl()将主机数转换成无符号长整型的网络字节顺序。本函数将一个32位数从主机字节顺序转换成网络字节顺序。#include<stdio.h> typedef unsigned short uint16;ty...原创 2019-05-09 08:58:44 · 31056 阅读 · 3 评论 -
C语言中,整型变量x小于0,是否可知x*2也小于0
假定计算机中32位的,用2的补码表示整数,若x程序如下: #include int main() { int x= -4292967295; if(2*x<0) printf("2*x<0\n"); else printf("2*x>0\n"); return 0; }程序输出 2*x>0原创 2017-02-25 23:35:45 · 1599 阅读 · 0 评论 -
char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
两者不相等,是因为str1 和 str2 都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址。但有些情况却不一样,程序如下:#include int main(void){ const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; c原创 2017-02-22 22:59:00 · 4872 阅读 · 1 评论 -
高级IO学习总结1
#include #include #include #include #include #include int main(void){ // 读取鼠标 int fd = -1; char buf[200]; fd = open("/dev/input/mouse1", O_RDONLY); if (fd < 0) { perror("open:"); r原创 2016-11-21 21:36:20 · 345 阅读 · 0 评论 -
高级IO学习总结2
#include #include #include #include #include #include int main(void){ // 读取鼠标 int fd = -1; int flag = -1; char buf[200]; int ret = -1; fd = open("/dev/input/mouse1", O_RDONLY | O_NONBL原创 2016-11-21 21:42:36 · 336 阅读 · 0 评论 -
高级IO学习总结3—— select()函数
原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。 readfds:(可选)指针,指向一组等待可读性检查的套接口。 writefds:(可选)指针,指向一组等待可写原创 2016-11-21 22:09:46 · 507 阅读 · 0 评论 -
高级IO学习总结4—— poll()函数
#include int poll(struct pollfd fd[], nfds_t nfds, int timeout); 参数: 1)第一个参数:一个结构数组,struct pollfd结构如下: struct pollfd{ int fd; //文件描述符 short events; //请求的事件原创 2016-11-21 22:42:10 · 605 阅读 · 0 评论 -
高级IO学习总结——异步IO
(1)几乎可以认为:异步IO就是操作系统用软件实现的一套中断响应系统。(2)异步IO的工作方法是:我们当前进程注册一个异步IO事件(使用signal注册一个信号SIGIO的处理函数),然后当前进程可以正常处理自己的事情,当异步事件发生后当前进程会收到一个SIGIO信号从而执行绑定的处理函数去处理这个异步事件。3.6.6.2、涉及的函数:(1)fcntl(F_GETFL、F_SETF原创 2016-11-21 23:01:45 · 502 阅读 · 0 评论 -
嵌入式面试题收集
1、用预处理指令#define 声明一个常数,用以表明1 年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 意识到这个表达式将使一个 16位机的整型数溢出‐ 因此要用到长整型符号L, 告诉编 译器这个常数是的长整型数。2、用变量a 给出下面的定义 a) 一个整型数(An转载 2016-12-18 12:19:43 · 445 阅读 · 0 评论 -
C语言到C++的升级
在C语言中,重复定义多个同名的全局变量是合法的(多个同名的全局变量最终会被链接到全局数据区的同一个地址空间上)在C++ 中,不允许定义多个同名的全局变量struct 关键字的加强--C语言中的 struct 定义了一组变量的集合--C语言中的struct 定义的标识符并不是一种新的类型--C++中的struct用于定于一个全新的类型(也就是说不用typedef再声明一原创 2016-12-21 09:23:41 · 582 阅读 · 0 评论 -
不使用sizeof,如何求出数据类型的字节数
32位机器下,int型变量占用的内存空间大小为4个字节,如果不用sizeof的话可以通过以下2种方式:1,定义宏 #include #define MySizeof(Value) (char*)(&Value+1)-(char *)&Value int main() { int i; double f; double a[4]; double *q; print原创 2017-02-27 23:46:05 · 1823 阅读 · 2 评论 -
断言ASSERT() 是什么
ASSERT()一般被称为断言,它是一个调试程序时经常使用的宏。它定义在头文件中,通常用于判断程序中是否出现了非法的数据,在程序运行时它计算括号内的表达式的值。在此强调的一点,ASSERT()捕获的是非法情况,而非错误情况,错误情况是必然存在的,并且一定需要作出相应的处理,而非法情况则不是,它可能只是漏洞而已。其用法如下: ASSERT(n != 0); k = 10/n;原创 2017-02-20 23:39:44 · 1134 阅读 · 0 评论 -
如何用sizeof判断数组中有多少个元素
只需要用整个数组的sizeof去除以一个元素的sizeof即可求出数组中元素的个数,以数组名array为例,代码为 #define Count (sizeof(array[0]))或者#define Count(sizeof(array)、sizeof(数组的类型,如int,double等))。程序示例如下:#include#define Count (sizeof(array)/si原创 2017-03-01 23:27:46 · 4321 阅读 · 0 评论 -
枚举和define有什么区别
两者只有恨小的区别,在C语言中,枚举为整型,枚举常量为int型,因此它们都可以和其他整型类别混用而不会出错,而且枚举优点众多;能自动赋值;调试器在检验枚举变量时,可以显示符号值;服从数据块作用域规则。具体而言,两者的区别表现在以下几个方面:(1)枚举常量是实体中的一种,而宏定义不是实体。(2)枚举常量属于常量,但宏定义不是常量。 (3)枚举量具有类型,但宏没有类型,枚举变量具有与普通变原创 2017-03-01 23:46:24 · 2161 阅读 · 1 评论 -
枚举变量的值如何计算
以如下程序实例进行分析。 #include int main() { enum{a, b=5, c,d=5,e); printf("%d%d%d%d%d\n",a,b,c,de); return 0; } //程序输出 0 5 6 4 5枚举量的值默认为前一个变量值加1,而第一个如果没有赋值,则默认值为0。从这个例子可以看出枚举量值是可以重复的。原创 2017-02-21 23:24:56 · 1466 阅读 · 0 评论 -
头文件引用中尖括号与“”的区别
尖括号<>表明这个文件是一个工程或标准头文件。查找过程会首先检查预定义的目录,我们可以通过设置搜索路径环境变量或命令选项来修改这些目录。如果文件名用一对引号括“”起来,则表明该文件是用户名提供的头文件,查找该文件时将从当前文件目录(或文件名制定的其他目录)中寻找文件,然后在标准位置寻找文件。...原创 2019-06-24 23:29:29 · 897 阅读 · 0 评论