
linuxC的知识点
bencolyy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
linux C的数据类型(1)
1》变量与常量{ 变量:指在其作用域内可以改变的量。 常量:值不会改变的量。它只能被访问,读;不能被写,赋值。 C语言中{整型,字符型,实型》称为基本数据类型;整型与实型》称为数值型;C中还有构造类型,指针类型,枚举类型和空类型}}2》基本数据类型{整型》{ long int,int,short int;unsigned long int,unsig...原创 2018-03-23 09:25:39 · 194 阅读 · 0 评论 -
UDP主要丢包原因及具体问题分析
UDP主要丢包原因及具体问题分析 一、主要丢包原因 1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。 2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不...转载 2018-09-07 15:14:36 · 874 阅读 · 0 评论 -
常见的网络协议
网络层---数据包的包格式里面有个很重要的字段叫做协议号。比如在传输层如果是TCP连接,那么在网络层IP包里面的协议号就将会有个值是6,如果是UDP的话那个值就是17---传输层。 传输层---通过接口关联(端口的字段叫做端口)---应用层。 用netstat –an 可以查看本机开放的端口号。 代理服务器常用以下端口: (1). HTTP协议代理服务器常用端口号:80/8080/3128...转载 2018-09-11 16:59:11 · 1361 阅读 · 0 评论 -
int与unsigned int隐式转换
最近看到一道经典例题:看代码#include <stdio.h>int main(){ unsigned int a = 6; int b = -20; (a+b)>6?printf(">6\n"):printf("<6\n"); return 0;} 结果是 >6为什么呢?这里涉及到了隐式转换的问题》》》》》C在以下四种情况下会进行隐式转换: 1...原创 2018-06-02 15:05:19 · 20726 阅读 · 1 评论 -
函数能否返回函数内指针
我们大家都知道指针函数的返回指针不能指向函数内的自动变量,如果需要返回函数的内部变量的话,就需要将该变量声明为静态变量。为什么函数能够返回 静态变量的地址而不能返回局部自动变量的地址,到底什么样的对象能够返回其地址,而什么样的对象不能够返回其地址?静态变量与局部自动变量的主要区别是什 么? 要想明白这些就需要理解程序的内存布局情况 程序的存储区域分为:代码段、只读数据段...转载 2018-06-01 08:48:12 · 13717 阅读 · 3 评论 -
字符串的越界问题strcat的实现
字符串的越界会导致段错误例子:#include <iostream>#include <assert.h>using namespace std;char * Strcat(char *dest,const char *src) //把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')。{ while(*dest!='\0') { d...原创 2018-06-01 08:45:32 · 1242 阅读 · 0 评论 -
C语言预处理指令
#define 》》 宏定义#undef 》》撤销已定义的宏名#include 》》使编译程序将另一源文件嵌入到带有#include 的源文件中#if 》》#if后面的常量表达式若是true,就编译#if与#else之间的代码,否则跳过这些代码。#endif 》》 代表#if 的结束#else》》与if-else相似,代表另一选择#elif 》》 与else if相似#ifdef 》》如果有定义#...原创 2018-05-30 21:49:45 · 237 阅读 · 0 评论 -
enum关键字
枚举enum例子:#include <stdio.h>enum Color{ GREEN = 1, RED,//2 BLUE,//3 GREEN_RED = 10, GREEN_BLUE//11}colorVal;int main(){ colorVal = RED; printf("%d\n",sizeof(colorVal)); printf("%d\n",colorVal ); ...原创 2018-06-21 10:46:42 · 304 阅读 · 0 评论 -
const与define的区别
#define PI 3.14首先:define,在程序编译的时候会把“#define PI 3.14”以后所有代码中的PI换成3.14,然后进行编译,#define的声明周期止于编译期,它存在于程序的代码段,在实际程序中它只是一个常数、一个命令中的参数,没有实际存在,它只是进行文本替换;const常量存在于程序的数据段,并在堆栈上分配了空间,它在程序中是存在的可以被调用,传递const常...原创 2018-06-03 16:16:58 · 173 阅读 · 0 评论 -
struct与union的区别
(结构体)struct与(联合体)union都是由不同数据类型组成;但同一时刻中,union中只能存放一个被选中的成员,而struct中所有成员都存在;一个struct的长度等于所有成员长度总和(注意内存对齐);union的长度为最长成员的长度。对union其他成员赋值会对原先的值覆盖。...原创 2018-05-05 09:07:08 · 337 阅读 · 0 评论 -
C语言中关键字const
const修饰变量,变量里的数据可以完好无损,readonly;const不仅可以修饰基本类型,还可以修饰一些构造类型,指针,数组,指针数组,结构体数组等例子:const int a = 10;//去掉int const修饰a;a的值不能变 int const a = 10;//去掉类型int const修饰a,a的值不变const int *p;//去掉int *p不变int * ...原创 2018-05-04 09:56:56 · 145 阅读 · 0 评论 -
字符串函数系列
1、memset(void *str,int c,int count);#include <string.h>#include <stdio.h>#include <memory.h>int main(){ char s[100] = "yinzewen"; printf("before:%s\n", s); memset(s,'*',3); printf("a...原创 2018-05-04 09:51:48 · 112 阅读 · 0 评论 -
C语言关键字volatile
volatile修饰变量表示该变量易受外界影响发生改变,volatile强烈要求编译器每次对变量进行访问都要从内存中进行;int a = 10;b = a;c = b;当编译器扫到第一行时10赋给了a;自后a变量的值没有发生改变,a赋给了b,b赋给了c ,由于CPU访问内存的速度较慢,编译器为了提高效率,直接将10赋给了c。当是在多线程编程当中,在一个线程中变量的值没有改变,我们不能保证在其他线程...原创 2018-03-27 08:24:40 · 118 阅读 · 0 评论 -
C语言关键字const
const 是constant的缩写,只要有变量前面用const修饰,就意味着该变量里面的数据是readonly。const可以修饰基本类型,构造类型,指针,等。const int a = 10;//去掉int a 的值不变int const a = 10;//去掉int a的值不变;const int a[10] = {0};//去掉int 数组里的内容不变const int *...原创 2018-03-27 07:58:13 · 110 阅读 · 0 评论 -
linux C的关键字extern
利用关键字extern,可以在一个文件中引用另一个文件中定义的变量或者函数,下面就结合具体的实例,分类说明一下。 一、引用同一个文件中的变量#include<stdio.h>int func();int main(){ func(); //1 printf("%d",num); //2 return 0;}int num = 3;int fu...转载 2018-03-23 10:13:30 · 2566 阅读 · 0 评论 -
linux C的关键字static
static修饰变量,该变量空间独立于函数中的auto变量或栈变量,它在内存的静态区分配;一般来说局部变量存放在栈区;其生命周期随语句块执行结束而结束;用static修饰,该变量就放在内存静态数据区;其生命周期持续到整个程序结束为止;虽然其变量的生命周期与存储位置变化,但作用域没有改变;用static修饰局部变量,该变量初始化只在程序初次运行时执行一次,且只执行一次。若静态局部变量没有初始...原创 2018-03-23 09:59:31 · 2440 阅读 · 0 评论