由void指针对指针的理解

最近看到void*,老是弄不清楚*((INT8S*)p[param->Current_Item].pData)=f_temp;,认为不能这样写,只有写成这样才是正确的写法: void *p;int a=10;p = &a;但是后来仔细理解一下后,发现(INT8S*)p[param->Current_Item].pData已经有明确的指向地址了,因此可以这样写。因为如果没有初始地址时,系统是随机分配的存储地址,运行时系统读取不到*((INT8S*)p[param->Current_Item].pData),因此报错。然后试着运行了下int *指针,只要指针有初始地址,都可以这样写...
默认分类 | 2012-06-09 09:47 | 阅读 1323 次 | 评论 4 条

release生成的exe文件的运行结果和debug下的不同

为什么release生成的exe文件的运行结果和debug下的不同? 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://tyima.blogbus.com/logs/500759.html 本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release 版的程序-------------------------------------- 关于Debug和Release之本质区别的讨论一、Debug 和 Release 编译方式的本质区别 Debu...
默认分类 | 2012-06-05 23:15 | 阅读 2545 次 | 评论 0 条

C语言“三字母词”

在ANSI标准中,定义了“三字母词”,或者成为“三联符序列”,英文为"trigraph sequences"。目的主要是为了在一些特定的字符集中,比如一些七位代码集中,解决一些特定字符的输入问题。 也许是由于这些字符集我们基本上用不到,所以在大多数C语言的书籍中,我们都看不到对“三字母词”的讲解。这里资料来源于参考ANSI C99标准(即传说中的《American National Standards Institute for Programming Languages-C》 1999年,我们习惯简称为“C99”)。 截止到现在,“三字母词”有且仅有9个...
默认分类 | 2012-06-03 11:29 | 阅读 1809 次 | 评论 0 条

#,##,#@在宏定义中的使用

先看程序: #include <stdio.h>#define f(a,b) a##b #define g(a) #a#define h(a) g(a)#define p(a) #@aint main(int argc, char* argv[]){ printf("%d\n",f(1,2)); printf("%s\n", g(f(1,2))); printf("%s\n", h(f(1,2))); printf("%c, %d\n", p(1), p(1)); return 0;} 输出结果: 12f(1,2)121,49 ##是连接操作符(是t...
默认分类 | 2012-06-03 09:38 | 阅读 869 次 | 评论 0 条
文章分类