先发基本问题,再发编程问题..........想成为嵌入式程序员应懂得的 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 中的代码是 EXE 中的线程所调用,那么这个时候是不是说这个 DLL 没有自己独立的堆栈?假如 DLL 中的代码是由DLL 自己创立的线程所执行,那么是不是说 DLL 有独立的堆栈?以上讲的是堆栈,假如对于堆来说,每个 DLL 有自己的堆,因此假如是从 DLL 中动态分派的内存,最佳是从 DLL 中删除,假如你从 DLL 中分派内存,然后在 EXE 中,或者此外一种 DLL 中删除,很有也许导致程序瓦解unsigned short A = 10;printf("~A = %u\n", ~A);char c=128; printf("c=%d\n",c);输出多少?并分析过程第一题,~A =0xfffffff5,int 值 为-11,但输出的是 uint。因此输出 4294967285第二题,c=0x10,输出的是 int,最高位为 1,是负数,因此它的值就是 0x00 的补码就是128,因此输出-128。这两道题都是在考察二进制向 int 或 uint 转换时的最高位处理。分析下面的程序:void GetMemory(char **p,int num...