![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C学习
BlueLoveyyt
这个作者很懒,什么都没留下…
展开
-
C++中引用与指针的区别
转自 http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.htmlC++中引用与指针的区别(详细介绍)C++中的引用与指针的区别 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向转载 2015-04-07 20:10:15 · 375 阅读 · 0 评论 -
函数指针 编译问题
这是main.c#includevoid func_main(){ printf("func_main!\n"); func_file_1(func_file_2);}int main(){ func_main(); return 0;}这是file_1.c#includevoid func_file_1(void(*func)原创 2015-05-18 00:29:47 · 929 阅读 · 0 评论 -
how to use assert() efficiently
Context: I write server software for a living, the kind that stays up for weeks before the next version is loaded. So my answers may be biaised toward highly defensive code.The principle.Befor转载 2015-06-19 12:07:42 · 681 阅读 · 0 评论 -
C语言产生随机数
一说起随机函数,恐怕又有人说这是老生长谈了……一般很多人都形成了自己的固定格式,因为随机数用处比较大,用的时候比较多,拿过来就用了。但是新手不这么干,他们总是抱有疑惑,我就是一个新手,而且较菜……为了让跟我一样的菜鸟看明白,我会尽量的说得让高手们不屑一顾(:由于可能内容太多可能会分篇,大家见谅^计算机的好处是精确,所以它不擅长模拟信号,但它的缺点也是如此。于是在一些模拟问题上计算机遇到麻烦转载 2015-05-31 00:01:22 · 960 阅读 · 0 评论 -
Snprintf Strncpy Memcpy Strlcpy各自的特点
Snprintf Strncpy Memcpy Strlcpy各自的特点在做一个大型系统的性能优化时,字符串拷贝都能在性能消耗方面占据相当比重,选择合适的字符串处理函数,至少能避免一些无谓的性能消耗。通常接触的字符串拷贝函数有这么些:snprintf strncpy memcpy strlcpy。考虑的核心问题就是高效和安全。snprintfint snprintf(cha转载 2015-06-09 20:56:59 · 1378 阅读 · 0 评论 -
字符串拷贝函数的安全用法模板
字符串拷贝函数的安全用法模板Src 完全拷贝snprintf:bzero(dest, sizeof(dest));snprintf(dest, sizeof(dest), “%s”, src);strncpy:bzero(dest, sizeof(dest));strncpy(dest, src, sizeof(dest)-1);Src 截取原创 2015-06-10 00:58:10 · 1676 阅读 · 0 评论 -
关于数组结构体的初始化
/////////////////////////////////////////////////////////该问题涉及到数据类型初始化的问题,现将C语言中数据类型初始化总结如下1.用{}初始化简单变量的初始化形式如下: 数据类型 变量名=初始化值; 例如,定义整型变量a,并给其初始化值10的语句如下 int a=10;数组的初始化,需要通过一常量数转载 2015-05-24 23:28:49 · 3348 阅读 · 0 评论 -
int 与char数组之间的转换
1 #include 2 #include 3 #include 4 5 int main() 6 { 7 char arr[4] = {0}; 8 int val = 2345455; 9 10 memcpy(arr, &val, 4);原创 2015-06-11 15:28:30 · 2690 阅读 · 0 评论 -
文件尾判断 EOF feof()两种方式
查看 stdio.h 可以看到如下定义: #define EOF (-1) #define _IOEOF 0x0010 #define feof(_stream) ((_stream)->_flag & _IOEOF) 由此可以看出,这两种方式的原理是不同的。 在这里先说下EOF和feof()这个两个宏定义,在我们学的转载 2015-05-24 23:44:15 · 1053 阅读 · 0 评论 -
C语言中的static 详细分析
转自:http://blog.csdn.net/keyeagle/article/details/6708077 感谢作者google了近三页的关于C语言中static的内容,发现可用的信息很少,要么长篇大论不知所云要么在关键之处几个字略过,对于想挖掘底层原理的初学者来说参考性不是很大。所以,我这篇博文博采众家之长,把互联网上的资料整合归类,并亲手编写程序验证之。转载 2015-05-22 00:40:33 · 461 阅读 · 0 评论 -
可变参数的使用 va_start和va_end
本文主要介绍va_start和va_end的使用及原理。 在以前的一篇帖子Format MessageBox 详解中曾使用到va_start和va_end这两个宏,但对它们也只是泛泛的了解。 介绍这两个宏之前先看一下C中传递函数的参数时的用法和原理: 1.在C中,当我们无法列出传递函数的所有实参的类型和数目时,可以用省略号指定参数表void foo(转载 2015-05-21 12:19:30 · 712 阅读 · 0 评论 -
malloc、calloc、realloc的区别
转自:http://blog.csdn.net/shuaishuai80/article/details/6140979 感谢作者!(1)C语言跟内存分配方式从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建转载 2015-05-17 19:45:31 · 439 阅读 · 0 评论 -
const int *p,int *const p区别
1)先从const int i说起。使用const修饰的i我们称之为符号常量。即,i不能在其他地方被重新赋值了。注意:const int i与int const i是等价的,相同的,即const与int的位置无所谓。2)const int *p看例子:int i1=30;int i2=40;const int *p=&i1;p=&i2; //此处,p可以在任何时候转载 2015-04-12 21:46:31 · 1425 阅读 · 0 评论 -
gets puts printf scanf 区别
① gets遇回车时结束输入。也就是说,gets可以接受回车前的任何输入。 scanf不同,遇到回车、空格、制表符就结束输入。 eg. String a=”I am a student; 如果要一次性的接受全部的字符串,要用gets。 ② 输入结束后,gets的回车不会留在缓冲区;而转载 2015-04-12 13:51:56 · 641 阅读 · 0 评论 -
指针中的引用 *&
指针的引用,相当于传递的是:指针的指针, 这样指针的数值是可以改变的 而单传递指针,不传递指针的引用,那么指针指向的数据是可以改变,而指针本身是不可以改变的 fun(int * p); // pA的数值在函数返回后不会变化 fun(int*& p); // pA的数值在函数返回可能会发生变#includevoid fu原创 2015-04-07 12:26:35 · 454 阅读 · 0 评论 -
C语言静态库动态库
我们在编写一个C语言程序的时候,经常会遇到好多重复或常用的部分,如果每次都重新编写固然是可以的,不过那样会大大降低工作效率,并且影响代码的可读性,更不利于后期的代码维护。我们可以把他们制作成相应的功能函数,使用时直接调用就会很方便,还可以进行后期的功能升级。 例如我要在一段代码中多次交换两个变量的值,我可以在代码中多次写入i=x;x=y;y=i;转载 2015-04-13 09:43:16 · 937 阅读 · 0 评论 -
函数式宏定义与普通函数
函数式宏定义与普通函数 在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为函数式宏定义,那函数式宏定义与普通函数有什么区别呢?转载 2015-04-13 11:32:20 · 449 阅读 · 0 评论 -
strcpy sprintf memcpy
转自:http://blog.csdn.net/lickylin/article/details/7856779 感谢作者最近在做远程升级的内容,通过实践才真正体会到不同拷贝函数的作用char*strcpy(char *dest, const char *src);其对字符串进行操作,完成从源字符串到目的字符串的拷贝,当源字符串的大小大于目的字符串的最大存储空间后,执行该转载 2015-04-24 23:23:35 · 564 阅读 · 0 评论 -
fcanf fgets 的用法
1、fgets()用法 从流中读一行或指定个字符, 原型是char *fgets(char *s, int n, FILE *stream); 从流中读取n-1个字符,除非读完一行(换行\n),参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。 形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为转载 2015-04-28 17:14:21 · 2032 阅读 · 0 评论 -
C语言的相关简短笔记
字符串操作1. 拷贝最好优先选择memcpy 效率,稳定性比较高优先性:memcpy > snprintf> strncpy > sprintf > strcpy 2. 查找最好优先性选择memmem 效率,稳定性高原创 2015-04-24 23:40:33 · 704 阅读 · 0 评论 -
C语言全局变量多文件使用
C语言全局变量多文件使用定义一个全局变量,想在多个文件中使用,代码如下://var.hextern int var ; //var.c#include"var.h"int var = 10; //otherA.c#include"var.h" //otherB.c转载 2015-05-25 10:49:51 · 1367 阅读 · 0 评论