
C/C++语言
王二车
这个作者很懒,什么都没留下…
展开
-
C语言-共用体
共用体typedef union{ unsigned short number; unsigned char data[2];}strudent;void fun_union(){ strudent jack; jack.number=-2; printf("sizeof(studend)=%ld,data[0]=%#x,data[1]=%#X\n",sizeof(jac...原创 2018-09-17 21:39:38 · 246 阅读 · 0 评论 -
C语言-strlen/memcpy/strcpy
strlen不使用任何变量实现int FunStrlen(const char *strDest){ if(NULL == strDest) { printf("NULL == strDest, return!\n"); return -1; } if('\0' == *strDest) { return 0; } else { return (1+FunS...原创 2018-10-10 21:28:28 · 190 阅读 · 0 评论 -
C语言-算法-字符串
字符串操作#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>//字符串移位包含问题,比如AABCD前两位AA移到尾部后BCDAA包含CDAA字符串;bool contain_check(){ char s[10] = "A...原创 2018-10-14 21:51:11 · 633 阅读 · 0 评论 -
C语言-a+1/&a+1
a与&a int a[5]={1,2,3,4,5}; printf("%p,%p,%p\n", a,&a[0],&a);//0x7fff5f989670,0x7fff5f989670,0x7fff5f989670;64位系统 int *p=(int *)a+1; int *k=(int *)&a[0]+1; int *q=(...原创 2018-09-28 16:53:08 · 1031 阅读 · 0 评论 -
C语言-逗号运算符/表达式
逗号运算符 逗号运算符是所有运算符中级别最低的,遇到逗号运算符表示运算结束; int i=0; int j=(i++,i++,i++); printf("i=%d,j=%d\n", i,j);//i=3,j=2;i++遇;才算结束 i=0; int k=(i++)+(i++)+(i++); printf("i=%d,k=%d\n", i,k...原创 2018-09-28 15:42:42 · 5461 阅读 · 0 评论 -
C语言-const/volatile
const const关键字告诉编译器修饰的对象其值保持不变,表示其值不能被修改。 注意点: 0、const类型的存储跟一般的变量没有区别,在外部定义的存储在全局数据区,static的存储在静态数据区,在函数内部定义的存储在栈,const跟非const存储上没区别,只不过是read only的 1、在定义const变量时,需先初始化,因为以后不能被初始化和修改;...原创 2018-09-28 14:57:30 · 321 阅读 · 0 评论 -
C语言-补码
在计算机内,有符号数有3种表示法: 原码 原码就是符号位加上真值的绝对值,即用第一个二进制位表示符号(正数该位为0,负数该位为1),其余位表示值。 反码 正数的反码与其原码相同; 负数的反码是符号位不变其余原码逐位取反。 补码 正数的补码就是其本身; 负数的补码是在其反码的基础上+1 举例: [+1] = [0000 0001]原 ...原创 2018-09-28 13:54:04 · 12110 阅读 · 0 评论 -
C语言-void/void *
void c语言中,void为“不确定类型”,不可以用void来声明变量。如:void a = 10;如果出现这样语句编译器会报错:variable or field ‘a’ declared void。 在C语言中void 常常用于:对函数返回类型的限定和对函数参数限定 (1)对函数返回类型的限定:当函数不需要返回类型是必须用void 来限定返回类型,限定了函数的返回类型为voi...原创 2018-09-27 18:09:42 · 7869 阅读 · 0 评论 -
C语言-与0比较
整型 应当将整型变量用“==”或“!= ”直接与0 比较。 假设整型变量的名字为value ,它与零值比较的标准if 语句如下: if (0 == value) if ( 0 != value)指针 应当将指针变量用“==”或“!=”与NULL比较。指针变量的零值是“空”(记为NULL)。尽管NULL的值与0 相同,但是两者意义不同。假设指针变量的...原创 2018-09-27 17:04:47 · 3467 阅读 · 2 评论 -
C语言-sizeof()
是函数吗? 不是函数,是关键字,在编译时计算出对象所占的字节数。对象类型 0、变量 返回变量类型占用的字节大小。 1、表达式 char c = 1; int i = 2; printf("%ld,%ld\n",sizeof(c + i),sizeof(c = c + i));//4,1 前者c + i会隐式类型转化为in...原创 2018-09-27 16:17:52 · 5222 阅读 · 1 评论 -
C语言-static
修饰函数 改变作用域,函数只能在本文件中被调用,其他文件可以函数重名; (重名函数加static只能在文件中调用,不加static能被他文件调用,在有static函数的情况下不会调用到extern外部重名函数)。 好处:写代码在函数前加上static不用考虑与其他函数重名的问题。修饰局部变量 改变存储域,由栈区改为静态区,函数栈区销毁后此变量不会销毁依然存在,下...原创 2018-09-27 15:43:11 · 690 阅读 · 0 评论 -
C语言-枚举
枚举数据类型typedef enum { NUM1=1, NUM2, NUM3, NUM4, NUM5,}NUM;void FunEnumPri(NUM num){ printf("num=%d\n", num);//300}void FunEnum(){ printf("len=%ld,%ld\n", sizeof(NUM),sizeof(NUM1));//...原创 2018-09-26 17:41:48 · 318 阅读 · 0 评论 -
C语言-大小端
大端模式和小端模式 1.大端模式(Big_endian): 字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。 2.小端模式(Little_endian):字数据的高字节存储在高地址中,而字数据的低字节则存放在低地址中。函数判断 函数实现小端返回0,大端返回1;int FunCheckLittle(){ union check_system...原创 2018-09-26 16:20:49 · 998 阅读 · 0 评论 -
C语言-结构体对齐
对齐意义 现代计算机中,内存空间按照字节划分,理论上可以从任何起始地址访问任意类型的变量。但实际中在访问特定类型变量时经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序一个接一个地存放,这就是对齐 但最常见的情况是,如果不按照平台要求对数据存放进行对齐,会带来存取效率上的损失。比如32位的Intel处理器通过总线访问(包括读和写)内存数据。每个...原创 2018-09-26 15:07:43 · 422 阅读 · 0 评论 -
C语言-回调
callback 回调函数是通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。实例#include <stdio.h>typedef void*(*FUN)(voi...原创 2018-10-17 15:12:09 · 986 阅读 · 0 评论