先发基本问题,再发编程问题
想成为嵌入式程序员应懂得的 0x10 个基本问题:1:(void *)ptr 和 (*(void**))ptr 的成果与否相似
其中 ptr 为同一种指针
(void *)ptr 和 (*(void**))ptr 值是相似的2:int main() { int x=3; printf("%d",x); return 1; }问函数既然不会被其他函数调用,为何要返回 1
mian 中,c 原则认为 0 表达成功,非 0 表达错误
详细的值是某中详细出错信息1,要对绝对地址 0x100000 赋值,我们可以用(unsigned int*)0x100000 = 1234;那么要是想让程序跳转到绝对地址是 0x100000 去执行,应当怎么做
*((void (*)( ))0x100000 ) ( );首先要将 0x100000 强制转换成函数指针,即:(void (*)())0x100000然后再调用它:*((void (*)())0x100000)();用 typedef 可以看得更直观些:typedef void(*)() voidFuncPtr;*((voidFuncPtr)0x100000)();2,已知一种数组 table,用一种宏定义,求出数据的元素个数#define NTBL#define NTBL (sizeof(table)/sizeof(table[0]))面试题: 线程与进程的区别和联络
线程与否具有相似的堆栈
dll 与否有独立的堆栈
进程是死的,只是某些资源的集合,真正的程序执行都是线程来完毕的,程序启动的时候操作系统就帮你创立了一种主线程
每个线程有自己的堆栈
DLL 中有无独立的堆栈,这个问题不好回答,或者说这个问题自身与否有问题
由于 DLL中的代码是被某些线程所执行,只有线程拥有堆栈,假如 DLL