![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 86
@所谓伊人
关关雎鸠,在河之洲。
展开
-
图书管理系统项目总结(2018/4/1--2018/4/20)
1.Web服务器Web服务器的工作原理并不复杂,一般可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接。下面对这4个步骤作一简单的介绍。连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。请求过程就是Web的浏览器运用socket这个文件向其服务器而提出各种...原创 2020-07-27 23:46:32 · 209 阅读 · 0 评论 -
动态内存/动态数组
一、malloc 1.常用表达式:int *p = (int *)malloc(n*sizeof(int)); 为20个char*分配内存 char **p = (char **)malloc(sizeof(char*)); 2.malloc()内是所需申请的字节数,而malloc本身并不知道要申请什么类型的字节,malloc本身的类型:void *mall原创 2017-08-14 16:48:51 · 337 阅读 · 0 评论 -
众多回文问题
//1.判断一个数字是否是回文bool IsCircleNum(int num,int len){ char tmp = 0; char *str = (char *)malloc(len*sizeof(char)); char *start = str; char *start1 = str; int i = 0; int num0 = num; whil原创 2017-10-08 15:49:42 · 209 阅读 · 0 评论 -
自定义数据类型/结构体(struct)、typedef
一、struct1.struct Student //只要定义好了与基本类型一样{ char name[20]; int age;};int main(){ int a = 10; struct Student stu1={"caocao"}; //使用 age没有初始化默认为0}原创 2017-08-16 19:55:29 · 1195 阅读 · 0 评论 -
一个乒乓球引发的一系列问题(穷举法)
一、乒乓球对手匹配:A:不和Z,C不和X、Zvoid Match()//穷举{ for(char a='X';a { for(char b='X';b { for(char c='X';c { if(a!='X' && c!='X' && c!='Z' && a!=b && b!=c && a!=c)原创 2017-08-17 10:03:14 · 335 阅读 · 0 评论 -
可变参数问题(以及Myprintf函数的实现)
#include //可变参数头文件例如:1.int Max_list(int a,...)//参数有好多怎么办?{ va_list list; int max = a; int cur = a; va_start(list,a);//没关系,指针来解决;打开指针,list是指向下一个参数的指针,a是第一个参数的指针 while(cur >=0原创 2017-10-08 16:53:17 · 297 阅读 · 0 评论 -
字符串与数字之间的相互转换、判断大小端(用的是union)
一、Myitoa1.初级版void Myitoa( char str[100],int num){ assert(str != NULL); int i = 0; int a = 0; int b = 0; int tmp0 = 0; char tmp[100]; if(num num = -num; tmp0原创 2017-10-08 16:00:08 · 649 阅读 · 0 评论 -
结构体大小的计算、联合、位段
硬件里的寄存器读取数据的整数倍,有个内存对齐的规则struct A{ int a; int b;};//8struct B{ char a;//1+3 int b;//4};struct C{ char a;//1+1 short b;//2 int c;//4};struct D{ char原创 2017-08-20 17:46:03 · 389 阅读 · 0 评论 -
Mymemcpy
Mymemcpy这个函数实现了数组、字符串等等的内存拷贝,解决了内存重叠、拷贝速度的问题,这里值得注意的是为了实现拷贝速率的提升,要考虑字节对齐问题,这样想,如果考虑操作系统字长对齐(应用程序相对于操作系统), 那么在32位操作系统上,可以4个字节4个字节地考虑,在64位操作系统上,可以8个字节8个字节地拷贝。 在此留点疑惑:cache 还有小内存拷贝方案,大内存拷贝方案。#i原创 2017-10-10 18:46:00 · 664 阅读 · 0 评论 -
C和指针小测验改错
1. 给出以下定义,下列哪些操作是合法的(A)const char* p1 = “hello”;char* const p2 = “world”;A.p1++; B.p1[2] = ‘w’; C.p2[2] = ‘l’; D.p2++;解析:const:定义常变量,变量变成只读,即不能做左值,字符串常量不允许修改,所以B、C错误!const修饰p2,所以p2原创 2017-10-12 17:45:44 · 1302 阅读 · 0 评论 -
C语言写CGI
一、CGI概述 CGI(公用网关接口)规定了Web服务器调用其他可执行程序(CGI程序)的接口协议标准。Web服务器通过调用CGI程序实现和Web浏览器的交互, 也就是CGI程序接受Web浏览器发送给Web服务器的信息,进行处理, 将响应结果再回送给Web服务器及Web浏览器。CGI程序一般完成Web网页中表单(Form)数据的处理、数据库查询和实现与传统应用系统的集成等工 作。CGI程序可以用...转载 2018-08-07 12:19:57 · 289 阅读 · 0 评论 -
高级指针
一、一些小碎片1.C语言编译时,函数名前加下划线,而库函数本身有下划线,所以C语言不支持函数名重载2.对于C++来说,它支持函数名重载Max(float,float)--->(?Max@@YAHHH@Z)Max(int,int) --->(?Max@@YAMMM@Z)总结:所以呢,C++之所以支持函数重载,是因为它考虑了参数列表,它生产的符号会根据参数列表生成;而原创 2017-09-25 10:49:31 · 198 阅读 · 0 评论 -
C语言中函数返回字符串的四种方法
C语言中函数返回字符串的四种方法原文链接: http://www.cnblogs.com/qingergege/p/6496683.html在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己转载 2017-09-26 07:37:09 · 249 阅读 · 0 评论 -
运算符
按位与、或、异或等运算方法 按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。另,负数按补码形式参加按位与运算。“与运算”的特殊用途:(1)转载 2017-08-31 11:11:46 · 161 阅读 · 0 评论 -
全局/局部变量
一、全局变量1.全局变量:定义在函数外的变量(1)普通全局变量 int g_a;(2)静态全局变量 static int g_a;2.如何引用全局变量?//引用全局变量加extern(1)extern int g_b; (2)extern int Min(int a,int b); 二、局部变量1.局部变量:在函原创 2017-08-16 18:55:00 · 324 阅读 · 0 评论 -
assert、const
一、assert1、assert:断言,断定该结果一定成立,如果表达式为真,则忽略,否则程序崩溃,指出错误的地方2、将版本改为release,所有的断言自动失效3、assert与if放在一起使用4、代码char *Mystrcpy(char *des,char *src) //谨记:返回的是指针型,一定要加*Mystrcpy//参数检查,使程序具有健壮性/鲁莽原创 2017-08-10 23:46:05 · 200 阅读 · 0 评论 -
二维数组
一、二维数组1、行优先:把每一行看作一个一维数组,而不是每一列2、可以省略一维3、[ ]:使用时表示下标,定义时表示长度4、二维数组不是二级指针,一维数组是一级指针5、数组名是数组首元素的地址,前提:必须有首元素(只适用于一维数组)6、将多维数组看作一维数组,第一行就是首元素原创 2017-08-13 12:04:18 · 215 阅读 · 0 评论 -
递归、时间复杂度和空间复杂度
一、递归:函数自己调用自己Fibon数列是使用递归最差的例子//Age(5)表示第5个人的年龄//Age(4)表达第4个人的年龄//Age(3)表达第3个人的年龄//Age(2)表达第2个人的年龄//Age(1)表达第1个人的年龄//Age(n)表达第n个人的年龄//Age(n-1)表达第n-1个人的年龄int Age(int n)//O(n){ int tmp =10原创 2017-08-13 12:51:19 · 1681 阅读 · 0 评论 -
一维数组、指针、字符数组、字符函数
一、一维数组1、未被"初始化列表"指定的数组剩余元素,系统自动把整型初始化为0,字符型初始化为'\0',指针初始化为NULL二、数组名含义1、数组名表示整个数组,如下:(1)在定义数组的同一个寒暑假中,求sizeof(arr)(2)&arr+1,则加整个数组大小2、其它情况一维数组的数组名都表示数组首元素的地址三、指针、一些小知识1、a = 50; //左值原创 2017-08-06 15:39:53 · 435 阅读 · 1 评论 -
指针的算术运算
一、指针加法 指针加法需要调整,调整的权重为指针本身去掉一个* ,然后求sizeofex:指针p+-n 实际加的地址为p+-n*sizeof((*p)) 指针减法同加法原创 2017-08-07 15:48:54 · 424 阅读 · 0 评论 -
文件、文件系统
一、文件类型1.二进制文件:非文字形式,如图片,音乐,电影2.文本文件:文字形式二、外存和内存1.外存:如磁盘(如机械硬盘,固态硬盘[速度快])、磁带、CD,外存速度慢,掉电保护2.内存,速度快,掉电不保护,速度越快,价格越贵三、文件的输入和输出1.以内存为参照物,流入内存,叫做输入2.文件名是文件的唯一标识 唯一指的是全路径3.windows下文件名不区分原创 2017-08-20 17:31:47 · 256 阅读 · 0 评论 -
约瑟夫环、内存重叠
一、约瑟夫环有n个人围成一圈,报3的退出,问剩下的一个人的编号是多少?int Circle(int n)//约瑟夫环{ int *arr = (int *)malloc(n*sizeof(int)); int i; for(i=0;i { arr[i] = 1; } int count = n; //存活的人数 int times = 0;//报的原创 2017-08-28 19:51:35 · 193 阅读 · 0 评论 -
字符串复制、测字符串的有效长度
一、字符串复制1.void Mystrcpy1(char *des,char *src)//1 { int i; for(i=0;src[i]!='\0';i++)//1 { des[i] = src[i];//*(des+i) = *(src+i); } des[i] = '\0';}void Mystrcpy2(char *des,char原创 2017-08-10 23:42:58 · 408 阅读 · 0 评论 -
关于float转int的函数实现
之前写过几次int与char类型的字符串相互转换的问题,这次就想以float转成int为题,进行函数实现。首先先对float的存储方式,做一个简单说明:float(浮点数):在32位的计算机中占4个字节,存储格式为1位的符号位、8位的指数位、23位的尾数位。1位的二进制数,若为1则表示为负数,若为0则表示为正数。 8位的二进制数,表示范围为0 ~255,IE转载 2017-09-07 16:13:02 · 1304 阅读 · 0 评论 -
gets、scanf
gets 【1】函数:gets(字符指针) 【2】头文件:stdio.h(c中),c++不需包含此头文件 【3】原型:char*gets(char*buffer); 【4】功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取(接受)的换行符被转换为nu转载 2017-08-16 17:08:05 · 227 阅读 · 0 评论