sizeof

UDP组播

匿名 (未验证) 提交于 2019-12-02 23:57:01
多播(组播) 组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。 224.0 . 0.0 ~ 224.0 . 0.255 为预留的组播地址(永久组地址),地址 224.0 . 0.0 保留不做分配,其它地址供路由协议使用; 224.0 . 1.0 ~ 224.0 . 1.255 是公用组播地址,可以用于 Internet ;欲使用需申请。 224.0 . 2.0 ~ 238.255 . 255.255 为用户可用的组播地址(临时组地址),全网范围内有效; 239.0 . 0.0 ~ 239.255 . 255.255 为本地管理组播地址,仅在特定的本地范围内有效。 可使用ip ad命令查看网卡编号,如: itcast$ ip ad 1 : lo : < LOOPBACK , UP , LOWER_UP > mtu 65536 qdisc noqueue state UNKNOWN group default link / loopback 00 : 00 : 00 : 00 : 00 : 00 brd 00 : 00 : 00 : 00 : 00 : 00

数据结构―顺序表

匿名 (未验证) 提交于 2019-12-02 23:52:01
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<memory.h> typedef struct seqlist { int arr[10]; //首元素地址 int capacity; //数组一共能容纳多少数据。sizeof(arr)/sizeof(arr[0]) int size; //统计数组现在已经放进去多少数据,size值的范围 [0,capacity] }seqlist; //数组元素下标的最大值 capacity-1 顺序表:表现一般是数组,地址连续的存储单元依次存储数据元素。arr[10] 长度是固定的,在分配内存之前要确定数组的长度 n=sizeof(arr) / sizeof(arr[0]) 存储空间连续,允许随机访问,即访问任何下标的地方都可以 [0,n) 使用索引(下标)访问元素 arr[index] 插入元素,要判断是否超出数组下标。超出则申请二倍长度的新空间,再数据复制到新空间 每超出,如果是将k插入到链表末尾: int main() { int arr[10] = { 1, 2, 3, 4 }; seqlist* Seqlist; Seqlist->arr[9] = k; Seqlist-

strlen和sizeof

一个人想着一个人 提交于 2019-12-02 23:51:49
char sArr[] = "ILOVEC"; /*用strlen()求长度*/ printf("sArr的长度=%d\n", strlen(sArr)); //很显然,上面示例代码的运行结果为 6(因为不包括结束字符 null)。 这里需要特别注意的是,函数 strlen 返回的是一个类型为 size_t 的值 //关键字 sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同, 它的参数可以是数组、指针、类型、对象、函数等,如下面的示例代码所示: char sArr[] = "ILOVEC"; /*用sizeof求长度*/ printf("sArr的长度=%d\n", sizeof(sArr)); 模拟strlen(s) #include<stdio.h> int fun(char s[]); int fun(char s[]) { int i=0; while(s[i]) i++; return i; } int main(void) { int x; char p[81]="china"; x=fun(p); printf("%d",x); } 来源: https://www.cnblogs.com/kuugaxxx/p/11768085.html

数据结构(中)树

匿名 (未验证) 提交于 2019-12-02 23:49:02
一、二叉树 存储: 1.线性存储 2.链式存储 1.先序遍历 2.中序遍历 3.后序遍历 void PreOrderTraversal(BinTree BT) { BinTree T = BT; Stack S = (Stack)malloc(sizeof(SNode)); S->Top = -1; while (T || !IsEmpty(S)) { while (T) //一直向左,并将沿途节点压入堆栈 { Push(S, T); printf("%C", T->Data); T = T->Left; } if (!IsEmpty(S)) { T = Pop(S); T = T->Right; } } free(S); } 5.中序遍历堆栈 void InOrderTraversal(BinTree BT) { BinTree T = BT; Stack S = (Stack)malloc(sizeof(SNode)); S->Top = -1; while (T || !IsEmpty(S)) { while (T) //一直向左,并将沿途节点压入堆栈 { Push(S, T); T = T->Left; } if (!IsEmpty(S)) { T = Pop(S); printf("%C", T->Data); T = T->Right; } } free(S); } 6

文件操作(解密加密)

匿名 (未验证) 提交于 2019-12-02 23:49:02
文件加密: #include<stdio.h> #include<string.h> #include<stdlib.h> void code(char *s) { while(*s) { (*s)++; s++; } } int main() { char s[1024] = {0}; FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/file.txt","r"); FILE *p1 = fopen("/home/exbot/wangqinghe/C/20190716/b.txt","w"); while(!feof(p)) { memset(s,0,sizeof(s)); fgets(s,sizeof(s),p); code(s); fputs(s,p1); } fclose(p); fclose(p1); return 0; } 文件解密: #include<stdio.h> #include<string.h> #include<stdlib.h> void decode(char *s) { while(*s) { (*s)--; s++; } } int main() { char s[1024] = {0}; FILE *p = fopen("/home/exbot/wangqinghe/C/20190716/b

欧拉筛法

匿名 (未验证) 提交于 2019-12-02 23:49:02
memset(isprime,1,sizeof(isprime)); isprime[1]=false; for(int i=2;i<=N;i++){ if(isprime[i]){ prime[++primesize]=i; } for(int j=1;j<=primesize&&i*prime[j]<=N;j++){ isprime[i*prime[j]]=false; if(i%prime[j]==0){ break; } } }

大数加法(C++实现)

匿名 (未验证) 提交于 2019-12-02 23:49:02
最常规的大数加法 (两个数都是非负的整数) 思路: 用字符串的方式去存储我们需要计算的数 ,但是 要注意的一点就是我们是倒过来存储这个大数的 最常规的大数加法 (两个数都是非负的整数) 1 #include<iostream> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int L=110; 6 string add(string a,string b)//只限两个非负整数相加 7 { 8 string ans; 9 int na[L]={0},nb[L]={0}; 10 int la=a.size(); 11 int lb=b.size(); 12 // 倒叙存储 13 for(int i=0;i<la;i++) 14 na[la-1-i]=a[i]-'0'; 15 // 倒叙存储 16 for(int i=0;i<lb;i++) 17 nb[lb-1-i]=b[i]-'0'; 18 int lmax=la>lb?la:lb; 19 // 从个位开始计算 20 for(int i=0;i<lmax;i++) 21 { 22 na[i]+=nb[i]; 23 na[i+1]+=na[i]/10; 24 na[i]%=10; 25 } 26 // 去除前置0 27 if(!na

链表的有序插入

匿名 (未验证) 提交于 2019-12-02 23:43:01
2019独角兽企业重金招聘Python工程师标准>>> 从小到大排序 根据指针获取当前id,并设置前指针,方便操作: // test1107.cpp : 定义控制台应用程序的入口点。 // #include " stdafx.h " #include " stdio.h " #include " memory.h " #include < string .h> #include <stdlib.h> #include " string.h " typedef struct LINK{ int id; LINK * next; }Link; typedef struct LL{ Link * root; int num; }Ll; void insert(Ll *l, int num); int main(){ Ll *ll = (Ll *)malloc( sizeof (Ll)); ll ->num = 0 ; ll ->root = NULL; insert(ll, 5 ); insert(ll, 2 ); insert(ll, 20 ); insert(ll, 1 ); insert(ll, 100 ); Link *link = (Link *)malloc( sizeof (Link)); printf( " %d " ,ll->root-> id); link = ll-

Dtb文件组成

匿名 (未验证) 提交于 2019-12-02 23:43:01
https://blog.csdn.net/gaojy19881225/article/details/82053376 Dtb文件由4部分组成:fdt_header、memory reserve map、device-tree structure、device-tree strings。 前三部分都是4字节对齐,最后一部分――“device-tree strings”不要求4字节对齐。 struct fdt_header定义 struct fdt_header { fdt32_t magic; /*用于标dtb文件头,等于FDT_MAGIC=“0xd00dfeed”*/ fdt32_t totalsize; /*dtb文件大小 */ fdt32_t off_dt_struct; /* DT structure偏移 */ fdt32_t off_dt_strings; /* DT strings偏移 */ fdt32_t off_mem_rsvmap; /* memory reserve map偏移 */ fdt32_t version; /*版本号 */ fdt32_t last_comp_version; /*兼容最早版本号 */ /* version 2 fields below */ fdt32_t boot_cpuid_phys; /* Which physical

二维数组做函数参数传递

匿名 (未验证) 提交于 2019-12-02 23:42:01
#include<stdio.h> //#include<> //二位数组作为函数参数时,可以不指定第一个下标 void print_buf(int (*p)[3],int a,int b) //void print_buf(int p[][3],int a,int b) { int i,j; for(i = 0 ; i < a; i++) { for(j = 0; j < b; j++) { printf("p[%d][%d] = %d ",i,j,p[i][j]); } printf("\n"); } } int main() { int buf[2][3] = {{1,2,3},{4,5,6}}; //几个一维数组,一维数组几个数据 printf("%d %d\n",sizeof(buf)/sizeof(buf[0]),sizeof(buf[0])/sizeof(int)); print_buf(buf,sizeof(buf)/sizeof(buf[0]),sizeof(buf[0])/sizeof(int)); return 0; }