C语言理解
nanjoh
这个作者很懒,什么都没留下…
展开
-
CPU大小端
大端模式:是指数据的低位保存在内存的高地址,而数据的高位,保存在内存的地址中,小端模式:是指数据的低位保存在内存低地址中,而数据的高位保存在内存的高地址中, 为什么会有大小端之分,我们是以字节为单位,每个地址单元都对着一个字节,一个字节为8bit,但是在C语言中除了8bit char之外,还有16short型,对于大多数打印8位处理器,例如16或32位处理器,由于处理原创 2017-01-13 14:42:22 · 2816 阅读 · 0 评论 -
二级指针动态内存分配
指针是可变数组的首地址,正因为是可变数组,所以一般使用指针都是采用动态内存分配和释放的方式。一尾指针形式简单,容易理解,平时应用较多二维数组和二维指针比较复杂,并且在动态内存分配与释放方面比较复杂难以理解,但是二维数组和二维指针是非常有用的void func1(int**p1,int **p2){ int **temp; int *temp1; int i原创 2017-01-13 12:39:59 · 6881 阅读 · 0 评论 -
指针的指针理解
#include int main(){int a =100;int *p1 = &a;int **p2 = &p1;int ***p3 = &p2; printf("%d, %d, %d, %d\n", a,*p1, **p2, ***p3);printf("&p2 = %#X, p3 = %#X\n",&p2, p3);printf("&p1 = %#X, p2 =转载 2016-12-28 12:24:11 · 351 阅读 · 0 评论 -
C语言内存分配
1.C语言内存分为四个区栈:用来存放函数的形参和函数内的局部变量。由编译器分配空间,在函数指向完后编译器自动释放。堆:用来存放动态分配函数(如malloc)分配的空间,是由程序员自己手动分配,并且必须由程序使用free释放,如果忘记用free释放,会导致分配的空间一直站着不放,导致内存泄露,堆 顺序随意,栈 后进先出全局区(静态区):用来存放全局变量和静态变量,存在于程序的整个运行原创 2017-01-11 17:39:23 · 504 阅读 · 0 评论 -
数组指针和指针数组的区别
数组指针(也称行指针)定义 int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长,也就是说执行p+1,p要跨过n个整型数据的长度。如果将二维数组赋给指针,应该这样赋值: int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向包含4个元素的一维数组。p=a; //将该原创 2017-01-11 14:58:47 · 283 阅读 · 0 评论 -
链表的各类操作详解
链表是一种常见的重要的数据结构,它是动态地进行存储分配的一种结构,它可以根据需要开辟内存单元,链表有一个头指针变量,以head表示,它存放一个地址,该地址指向一个元素,链表中每一个元素称为结点,每个结点都应该包括两部分:一为用户需要的实际数据,二为下一个结点的地址,因此head指向第一个元素,第一个元素又指向第二个......知道最后一个,该元素不再指向其它元素,它称之为表尾,它的地址原创 2016-12-29 17:33:23 · 1287 阅读 · 0 评论 -
static 全局变量 全局变量 静态局部变量 局部变量 静态函数 普通函数 之间的区别
全局变量本身就是静态存储方式,静态全局变量也是静态存储方式,全部变量的作用域是整个源程序,static 全局变量指限定了定义该变量的源文件内有效在同一原程序的其它源文件不能使用它, static全局变量只初始化一次,防止在其它文件单元被引用; 把局部变量改变为静态局部变量后是改变了它的存储方式即改变了它的生存期,局部变量在栈中,static局部变量在静态存储区,静态局部变量只原创 2017-01-14 11:04:41 · 511 阅读 · 0 评论 -
结构体大小sizeof的理解
在32位编译环境中 sizeof的用法 sizeof(char) 1 sizeof (int) 4 sizeof(unsigned int) 4 sizeof(long int) 4 sizeof(short int) 2 sizeof(float)原创 2017-01-14 10:31:12 · 5680 阅读 · 0 评论 -
回调函数的作用
1.回调函数是一个很有用,也很重要的概念,当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数 2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件是自动调用,为此,你需要做三件事,1.声明,2.定义 3.设置触发条件,就是在你的函数中把你的回电话名转化为地址作为一个参数,便于系统调用, 3.所谓回调函数就是按照一定的形式由你定义并编写实现内容,当发生某种原创 2017-01-13 16:53:07 · 2178 阅读 · 0 评论 -
Push-Pull推挽输出和Open-Drain开漏输出
【Push-Pull推挽输出】原理:输出的器件是指输出脚内部集成有一对互补的MOSFET,当Q1导通、Q2截止时输出高电平;而当Q1截止导通、Q2导通时输出低电平。Push-Pull输出,实际上内部是用了两个晶体管(transistor),此处分别称为Top-Transistor和Bottom-Transistor。通过开关对应的晶体管,输出对应的电平。Top-Transistor原创 2017-02-27 14:35:46 · 2788 阅读 · 0 评论