FAQ 第一期
FAQ 第一期
by aka2006(天知道)
21:19 2003-3-24 Begin
C/C++-------------------------------------------------------------------------------
Q1. 在stdio.h中有如下“int _Cdecl printf (const char *format, ...);”,
这个“_Cdecl ”到底是什么东东?
A.
按照c的入栈方式,函数传递参数的方式从右向左。相对应的,有_Stdcall,_Stdcall调用方式用来调用win32 API。是一种函数调用方式的说明符,初学不用细究。
Q2. C++的最新版本是哪一年发布的?哪有最新版本的C++规范文档或者书籍?
请网友们推荐几本C++的好书(入门的或提高的)?
A. ANSI C++ 1994.
查标准C++文档,如《The C++ Programming Language》等
Q3. 请网友们推荐几本Windows编程的好书?
A. 我已买到。
Q4. 网冠科技编著的《C++时尚编程百例》,感觉不少内容就是把C用C++查找替换就OK,不少程序包含的头文件都是<stdio.h><dos.h>,不知道大家看后有没有这个感觉?
A. 烂书就把它扔进黑名单!
Q5. C语言的最新标准是?
A. C99(ANSI 1999). Refer to <C:The Complete Reference,Fourth Edition>,
written by Herbert Schildt.
--------------------------------------------------------------------------------------
/* 关于 C:The Complete Reference,Fourth Edition 的若干问题*/
/* 我手头上正好也有一本和你一模一样的书 ,图书馆借的 */
Q1. $1.5中讲述了“编译”和“解释”的区别,可是我不是很明白它们之间的区别,尤其是最后一句话:“编译是一次性开销,而解释则每次运行时都引起额外开销” 可否给我一个详细、浅显一点的解释。
A. 编译、解释是程序执行的两种方式,注意:是“执行”,这个由 “执行器”决定。
如C语言, 它可以编译执行,编译器有VC或BC等;
也可以解释执行!如在这本书的最后一章C解释程序就是一个C语言的解释器,但C主要是为编译执行而设计的,所以总是用编译。
看下面一段程序:
void main()
{
int result,n,k;
printf("Please input the n and k value: \n");
scanf("%d %d",&n,&k); /* input n , k */
//take the output
result = fun(n,k);
// Output
if (result)
printf("What you want is the result = \n%d \n\n",result);
else
printf("error of the value k or n...\n");
}
如果解释,则读第一句int result,n,k;把它转换出机器语言,执行分配内存;读第二句printf("Please input the n and k value: \n");执行输出这串字符;
而编译则,读完第一句int result,n,k;不做任何动作,继续读第二句printf("Please input the n and k value: \n");再读直至 }
最后再统一转换出机器代码*.obj,再执行,再输出字符串。
Q2. $2.1中有这样一句话:“C语言只规定了每种数据类型的最小范围而不是字节大小”。请问这句话应该怎样理解?
A. 就是说C规定int只能在-100到+100之间(具体数据是3万多),不管你的机子是16位还是32位,超过这个范围给int赋值都会溢出;而数据在16位上是以2个自己存储的,32位机子是以4个字节存储的,高位为0,所以C只规定范围,不决定字节多少。
Q3. $2.8中讲到“常量”时说C语言可以指明“多字节字符”,用单引号将各字字符括起来,如'xy'。那么这个所谓的“多字节字符”与字符常量,如"xy"有什么区别?
A. 首先 "xy"不是字符常量,是字符串常量,是字串,不是字符;如果把双引号" "改为单引号' '即'xy'就是字符(多字节)
这个好像是C的扩充功能,很少用,一般都用字串表示多字节字符。区别就在是用单引号还是双引号。
char c1,c2;
char *c3,*c4;
c1='x';//ok
c2='xy';//ok
c3="xy";//ok
c4='xy';//error... can't convert char* to char
Q4. 另外,请大家看看下面这段代码有什么地方不对,为什么?
int *p = 0; //error... can't allocate an integer to a pointer
*p = 10; //单看这句,没问题
A. p是整型指针,不能用整数给它赋值!!
Apache------------------------------------------------------------------------------
Q. Apache的中文显示问题??
我在Win2000下,装Apache for Win 版本,运行后原来的中文网页中中文字体变成乱码
看“查看”“编码”默认值为西文字符,请问在Apache中如何改变这个,使得直接打开
网页就是原来的样子??
A.
httpd.conf
AddDefaultCharset GB2312
同意楼上,已解决
Java------------------------------------------------------------------------------------
Q1、java的事件处理机制?
例如:public boolean action(Event e,Object o){
output.setText("You entered a char "+o.toString());
return true;
}
编译会有一个warning ,好像是说重载了。
A. 这是jdk1.0的事件处理机制,早已不推荐使用,请用最新的。
这个警告不是说你重载,而是告诉你这个函数已不推荐使用。
Q2、java函数可以先使用,后定义?这与c++不同?
A. 这很正常呀。java先把程序编译成类,再调用时才装载,那时再搜索这个函数,存在就可以调用。
Q3、applet的入口?
A. public void init()可以算是入口程序,applet一执行,先执行这个函数
其他问题--------------------------------------------------------------------------------
Q1. 练习与开发
A. 是不同的两个过程。练习要亲自去输入代码,开发要充分利用现有资源,不必事必亲恭。
Q2. 代码重用问题
A. 用类
Q3. 黑客技术
A. See G:\HACKER
Q4. 何为瘦客户机?瘦终端?
A. 即PC+OS+Browser.
把需要的运算,服务统统交给服务器来处理,客户端只要申请和结果,中间所有的处理过程都让服务器来做。
Q5. 有关GIS系统的网站?
A.
http://hero.web1000.com/
www.mapinfo.com.cn
www.go2map.com
www.mapinfo.com
------------------------------------------------------------------------------------------
END 21:37 2003-3-24