随笔分类 - c
摘要:这个基础函数,主要见过两种用法: 1.内存初始化 2.考试!!!(鉴于经常考试翻车,立个flag,逢考必对~) memset声明: void * memset ( void * ptr, int value, size_t num ); memset入参: ptr: Pointer to the b
阅读全文
摘要:<regex.h>不是标准的C语言库函数,目前只能在linux中使用。 相关结构体: /* Type for byte offsets within the string. POSIX mandates this. */ typedef int regoff_t; typedef struct {
阅读全文
摘要:sudo kill -9 `ps -ef|grep eclipse|awk '{print $2}'`
阅读全文
摘要:整型提升是C语言的一种规则,由C语言的发明人丹尼斯·里奇与肯·汤普逊创设: "A character, a short integer, or an integer bit-field, all either signed or not, or an object of enumeration ty
阅读全文
摘要:转载仅用于学习: https://blog.csdn.net/ipmux/article/details/17334099 enum型用于定义常量集合,相比#define有一些优势,如:enum是一种数据类型,使用时会检查类型匹配;enum增加了范围约束,避免变量赋值和使用时超出定义范围。但enum
阅读全文
摘要:有无符号数差异: 左移只有逻辑左移,即低位依次补:0; 右移: 无符号数 逻辑右移(高位依次补:0) 有符号数 算术右移(高位依次补:最高符号位) 当移位位数 k 多于实际数据类型 w 时,只移动 k mod w位;
阅读全文
摘要:1.二维数组名a的含义: 定义一个二维数组a : a数组包含3个行元素,a[0],a[1],a[2]。 每个行元素a[i] 又是一个一维数组,它包含4个元素。 2.二维数组地址的关系:(地址由行至列以元素类型递增) 3.二维数组与一维指针数组等价 数组名即行数组的首地址。 st + i 指的是 元素
阅读全文
摘要:在定义了数组大小时: sizeof是运算符,表示编译时分配的空间大小,即数组定义的大小,char t[20] = "sfa"。sizeof: 20; strlen: 3.在未定义数组大小时: sizeof根据实际位数确定,注意字符串隐藏的\0也算一位,。 eg:1char s[] = "a\128\
阅读全文
摘要:数据类型长度: 重新定义数据类型: 写嵌入式C代码时,经常会遇到代码移植的问题。我们通常需要重新定义一些类型,防止由于各种平台和编译器的不同而产生的类型字节数差异。
阅读全文
摘要:1、strlen的原型 2、strcpy(支持链式编程) 3、strcat(支持链式编程) 4、strcmp 5、长度受限的字符串函数 所以,经常在数组末尾手动加上字符串结束符:
阅读全文
摘要:出处:http://www.cnblogs.com/zhangziqiu/ 这篇博客对原码,反码,补码总结的很好,引用于此,学习用。 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 一. 机器数
阅读全文
摘要:1、未初始化和非法的指针 一个极为常见的错误: int *a; *a = 12; warning: 声明一个指针,但未初始化,那么12存储在什么位置就未可知。 声明一个指针,不会创建用于存储的内存空间。对于未初始化的指针,执行间接的访问操作是非法的。 如果a的初始值是个非法地址,赋值语句将会出错,从
阅读全文
摘要:1、数组名 int vector[10]; //vector是一个指针,是一个指向数组首元素的指针。即指向整形的指针。 int matrix[3][10]; //matrix是一个指针,是一个指向(有10个整形元素的)数组的指针。 指向数组的指针的声明方式: int (*p)[10] = matri
阅读全文
摘要:数组名做函数参数进行传递时,实际上是是一份该指针的拷贝。 给形参赋予其他值,并不影响实参的值。 类似于: int *p = a; //a为数组名 p = b; //b为数组名 当然,如果你传递了一个指向某个变量的指针,而函数对该指针执行了间接访问操作,那么函数就可以改变那个变量,但参数还是传值方式传
阅读全文
摘要:参考:http://www.spongeliu.com/218.html 内存对齐,是指一种计算机体系结构(如X86)对基本数据类型的存储位置有限制,要求其地址为某个数的倍数,通常这个数为4或8。这种要求会简化处理器的设计以及提升数据访问的效率。至于为什么会有这样的设计,简单的说访存总线的位数固定,
阅读全文
摘要:function <cstdio> sscanf int sscanf ( const char * s, const char * format, ...); Read formatted data from string Reads data from s and stores them acc
阅读全文
摘要:在标准C/C++中与日期和时间相关的数据结构 注意:年份是实际年份与 1900 的差值 我们可通过tm结构来获得日期和时间,tm结构在time.h中的定义如下: exmple: ANSI C标准称使用tm结构的这种时间表示为分解时间(broken-down time)。 而日历时间(Calendar
阅读全文
摘要:源码里面的最大最小值宏定义是这个样子 一直说宏定义要加一堆括号,才能正常的使用。虽然没有inline方便。不过,不可否认,底层用c确实很cool。 说白了就是运算符优先级的关系,自行脑补。。。 C语言运算符优先级 说明:同一优先级的运算符,运算次序由结合方向所决定。简单记就是:! > 算术运算符 >
阅读全文
摘要:在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。1. extern修饰变量的声明。 如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern int v,然后就可以引用变量v。 这里需要注意的是,被引用的变量v的链接
阅读全文
摘要:给一段地址赋值: 跳转到地址0x12345678处执行函数: 1、转化为函数指针 2、解引用 3、调用 (*(void(*)(void))0x100000000)(); 利用右左法则分析: void(*)(void)是一个返回值为void,参数为void的函数指针; (void(*)(void))0
阅读全文

浙公网安备 33010602011771号