sizeof

C语言实现点对点聊天程序

匿名 (未验证) 提交于 2019-12-03 00:19:01
自己用C语言写了个简单的聊天程序,客户端和服务端能够彼此接受并显示对方发来的消息。使用fork()函数,每个端有两个进程,一个进程用于向对方发送消息,另一个进程接收对方发来的消息。并运用了信号的相关知识识别对方程序是否结束。具体代码如下: //p2pserver.c #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <signal.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <error.h> #define ERR_EXIT(m) \ do \ { \ perror(m); \ exit (EXIT_FAILURE); \ } while ( 0 ); void handler( int sig) { printf ( "recv a sig = %d\n" , sig); exit (EXIT_SUCCESS); } int main( int argc, char *argv[]) { int listenfd; // listenfd = socket(PF_INET, SOCK

Qt学习笔记-OpenGL做正方体并旋转

匿名 (未验证) 提交于 2019-12-03 00:19:01
运行截图如下图: 代码如下: myglwidget.h #ifndef MYGLWIDGET_H #define MYGLWIDGET_H #include <QOpenGLWidget> #include <QOpenGLFunctions> #include <QOpenGLBuffer> class QOpenGLTexture; class QOpenGLShaderProgram; class MyGLWidget:public QOpenGLWidget,protected QOpenGLFunctions { Q_OBJECT public: MyGLWidget(QWidget *parent=0); protected: void initializeGL(); void paintGL(); void resizeGL(int w, int h); void keyPressEvent(QKeyEvent *evnet); private: QOpenGLShaderProgram *program; QOpenGLBuffer vbo; QOpenGLTexture *textures[6]; GLfloat translate,xRot,yRot,zRot; }; #endif // MYGLWIDGET_H myglwidget.cpp #include

数据结构之哈希变形――位图

匿名 (未验证) 提交于 2019-12-03 00:18:01
背景:海量数据处理 笔试题:给四十亿不重复的无符号,整形,没排过序。给一个无符号整数,如何快速判断一个数是否在这四十亿个数中 在这里我们就可以用到我们的哈希思想。 位图:我们只需要表示这个数字存不存在的话,只需要一个比特位即可,所以我们用一个数组来装元素的个数,每个元素都有八个比特位,那么就可以表示八个数字【(用uint64_t的话),因为uint64_t不论在多少位机子下都是八字节】 这样就可以轻松解决问题 下面是代码具体实现 bitmap.h #pragma once #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stddef.h> #include <unistd.h> #include <stdint.h> typedef uint64_t bitmaptype; typedef struct bitmap{ bitmaptype *data; uint64_t capacity; }bitmap; void bitmapinit(bitmap *bm,uint64_t capacity); void bitmapdestroy(bitmap *bm); void bitmapset(bitmap *bm,uint64_t index); void bitmapunset

C 语言中sizeof的理解

匿名 (未验证) 提交于 2019-12-03 00:18:01
sizeof() 是一个判断数据类型或者表达式长度的运算符 sizeof(类型说明符, 数组 名或 表达式 ); 或sizeof (变量名); 其返回值类型为size_t,在头文件 stddef.h 中定义。这是一个依赖于 编译系统 的值,一般定义为 在C99及以上标准中,sizeof(char)、sizeof(int)、sizeof(long)、sizeof(long long)、sizeof(float)、sizeof(double)、sizeof(long double)的值分别是1,4,4,8,4,8,16。 文章来源: C 语言中sizeof的理解

使用单链表来实现集合的交并差运算 数据结构

匿名 (未验证) 提交于 2019-12-03 00:17:01
该算法的设计,要求运行结果如下所示: 集合的运算如下: 原 集 合A: c a e h 原 集 合B: f h b g d a 有序集合A: a c e h 有序集合B: a b d f g h 集合的并C: a b c d e f g h 集合的交C: a h 集合的差C: c e 首先这里交并差的实现是基于链表中的元素已经从小到大排完序的链表。这里排序使用的是冒泡排序。 //链表的冒泡排序算法 bool BubbleSort(LinkList &L) //链表的冒泡排序 { LinkList p, q, tail; tail=NULL; while((L->next->next)!=tail) { p=L; q=L->next; while(q->next!=tail) { if((q->data) > (q->next->data)) { p->next=q->next; q->next=q->next->next; p->next->next=q; q=p->next; } q=q->next; p=p->next; } tail=q; } return true; } //集合的并 bool merge(LinkList &L1, LinkList &L2, LinkList &L3)//集合的并 这里的集合已经排序 { LinkList p1=L1->next, p2

C++primer学习笔记(三)

匿名 (未验证) 提交于 2019-12-03 00:11:01
没啥好说的,就是+- /& =、==等。 简单归纳:当一个对象被用作右值的时候,用的是对象的值(内存);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。假设p的类型是一个int*,则decltype如果作用于一个表达式时如decltype(*p)得到的是一个引用类型,而decltype(&p)的结果是一个int ** 其中逻辑与运算符(&&)和逻辑或(||)运算符是短路求值运算符: 对于逻辑与运算符来说,当且仅当左侧运算对象为真时才对右侧运算对象求值。 对于逻辑或运算符来说,当且仅当左侧运算对象为假时才对右侧运算对象求值。 赋值运算符满足右结合律,即 1 2 int a,b,c; a = b = c =3;//可以连续赋值 赋值运算优先级较低,所以在条件语句中,赋值部分通常加上括号,如: cpp int i; while((i=get_value())!=42){ //anything } 分前置版本和后置版本。前置版本先加1,然后将改变后的对象作为求值结果,后置版本也会将运算对象加1,但是求值结果是运算对象改变之前那个值的副本。 如果想测试一个算术对象或者指针对象的真值,最直接的方法就是将其作为if条件 1 2 3 4 if(val);//如果val是任意的非0值,条件为真 if(!val);//如果val是0,条件为真 有时我们试图将上面的真值测试写成如下形式:

The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力)

匿名 (未验证) 提交于 2019-12-03 00:07:01
传送门: https://nanti.jisuanke.com/t/41400 给你三个数组a,b,c,要你求有多少个三元组(i,j,k),使得 \[ \begin{array}{l}{\left|A_{i}-B_{j}\right| \leq C_{k}, \text { and }} \\ {\left|B_{j}-C_{k}\right| \leq A_{i}, \text { and }} \\ {\left|A_{i}-C_{k}\right| \leq B_{j}}\end{array} \] 上面的不等式经过化简,我们可以得到 我们需要求有多少个三元组,使得 \(A_i,B_j,C_k\) 可以组成一个三角形 这样组成三角形的题目类似于HDU4609 ( https://www.cnblogs.com/buerdepepeqi/p/11236100.html ) 但是不同的是 我们需要从三个数组中选择 所以这里就涉及到了选择重复的问题,我们考虑去重 假设拿a+b做一遍卷积,得到长度为a+b的木棍的数量, 我们假设 c是三角形的最长边,那么a,b,c三根木棍不能组成三角形的情况就是c的长度大于a+b的数量 我们枚举(a+b)这个长度,那么不能组成三角形的数量就是 可以组成当前长度的(a,b)的方案数*大于这个长度的c的数量 所以按照这样来说 我们就可以得到 做三遍卷积

C++ -- 第一次作业

匿名 (未验证) 提交于 2019-12-03 00:04:02
运算符(sizeof 及 运算符的转换) sizeof sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小。 sizeof 运算符可用于获取类、结构、共用体和其他用户自定义数据类型的大小。 使用 sizeof 的语法如下: sizeof ( data type ); 实例: #include <iostream> #include <iostream> using namespace std ; int main () { cout << "Size of char : " << sizeof ( char ) << endl ; cout << "Size of int : " << sizeof ( int ) << endl ; cout << "Size of short int : " << sizeof ( short int ) << endl ; cout << "Size of long int : " << sizeof ( long int ) << endl ; cout << "Size of float : " << sizeof ( float ) << endl ; cout << "Size of double : " << sizeof ( double ) << endl ; cout << "Size of

C++中杂项运算符

匿名 (未验证) 提交于 2019-12-02 23:57:01
运算符 描述 sizeof sizeof 运算符 返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。 Condition ? X : Y 条件运算符 。如果 Condition 为真 ? 则值为 X : 否则值为 Y。 , 逗号运算符 会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。 .(点)和 ->(箭头) 成员运算符 用于引用类、结构和共用体的成员。 Cast 强制转换运算符 把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。 & 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。 * 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。 来源:博客园 作者: 虽千万人吾往矣-GKH 链接:https://www.cnblogs.com/gkh-whu/p/11478307.html

UDP广播

匿名 (未验证) 提交于 2019-12-02 23:57:01
广播是在局域网之间的一对多的通信方式,使用的udp协议 /*** client.c ***/ #include <stdio.h> #include <unistd.h> #include <string.h> #include <sys/socket.h> #include <arpa/inet.h> #define SERVER_PORT 8000 #define MAXLINE 4096 #define CLIENT_PORT 9000 int main(int argc, char *argv[]) { struct sockaddr_in localaddr; int confd; ssize_t len; char buf[MAXLINE]; //1.创建一个socket confd = socket(AF_INET, SOCK_DGRAM, 0); //2.初始化本地端地址 bzero(&localaddr, sizeof(localaddr)); localaddr.sin_family = AF_INET; inet_pton(AF_INET, "0.0.0.0" , &localaddr.sin_addr.s_addr); localaddr.sin_port = htons(CLIENT_PORT); int ret = bind(confd, (struct