sponsored links

c语言深度解析

C语言深度解剖读书笔记(7.国嵌答疑问题)

August 30
C语言深度解剖读书笔记(7.国嵌答疑问题)
本节知识点: 1.可以利用这个宏 #define OFFSET(type,number)  (int)(&(((type*)0)->number))  求出结构体中成员的偏移量 2.对于assert的使用是: 可以这样 assert(dst && src); 也可以这样 assert((NULL != dst) && (NULL != src)); 上面两种方式都行! 3.给一个考指针运算的面试题吧: #include <stdio.h> void

C语言深度解剖读书笔记(5.内存管理的艺术)

August 30
C语言深度解剖读书笔记(5.内存管理的艺术)
本节知识点: 1.栈的知识(我觉得栈是本节很头疼的一个问题): 对于栈的问题,首先我们通过几个不同的角度来看(因为思维有些小乱所以我们通过分总的形式进行阐述): a.sp堆栈指针,相信学过51单片机,学过arm裸机的人都知道这个堆栈指针.我们现在从51单片机的角度来看这个堆栈指针寄存器.这个堆栈指针的目的是什么?是用来保护现场(子函数的调用)和保护断点(中断的处理)的,所以在处理中断前,调用子函数前,都应该把现场和返回地址压入栈中.而且堆栈还会用于一些临时数据的存放.51中的sp指针再单片机复位

C语言深度解剖读书笔记(4.指针的故事)

August 28
C语言深度解剖读书笔记(4.指针的故事)
指针这一节是本书中最难的一节,尤其是二级指针和二维数组直接的关系. 本节知识点: 1.指针基础,一张图说明什么是指针: 2.跨过指针,直接去访问一块内存: 只要你能保证这个地址是有效的 ,就可以这样去访问一个地址的内存*((unsigned int *)(0x0022ff4c))=10;  但是前提是 0x0022ff4c是有效地址.对于不同的编译器这样的用法还不一样,一些严格的编译器,当你定义一个指针,把这个指针赋值为一个这样的地址的时候,当检测到地址无效,编译的时候就会报错!!!如果一些不太

在某培训机构的听课笔记

August 24
在某培训机构的听课笔记
某实训机构有些小坑,听课加反省就当作对C语言的一种补充吧,哎~~~~,记录给自己看看. 1.int a=9,b=10,d=9;是可以的. 2.%*d ,在scanf中使用的时候,是1整数但不赋给任何变量,有个小代码: #include <stdio.h> #include <malloc.h> int main() { int a=23,b=5,c=9; scanf("%*d%d%d",&a,&b,&c); printf("%d

C语言深度解剖读书笔记(3.结构体中内存对齐问题)

August 24
C语言深度解剖读书笔记(3.结构体中内存对齐问题)
很多人都觉得内存对齐这个问题很难,很不好算,总算错,其实我想说只要你画一画就没那么难了.好了,进入正题. 本节知识点: 1.结构体为什么要内存对齐(也叫字节对齐): 其实我们都知道,结构体只是一些数据的集合,它本身什么都没有.我们所谓的结构体地址,其实就是结构体第一个元素的地址.这样,如果结构体各个元素之间不存在内存对齐问题,他们都挨着排放的.对于32位机,32位编译器(这是目前常见的环境,其他环境也会有内存对齐问题),就很可能操作一个问题,就是当你想要去访问结构体中的一个数据的时候,需要你操作