中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
C/C++ faq 7月24日 --7月28日
作者:未知 时间:2005-09-13 19:24 出处:ChinaUnix.net 责编:chinaitpower
              摘要:C/C++ faq 7月24日 --7月28日

简单问题:
1。发表主题: 本人是菜鸟,请问各位大虾,**p是什么意思?    
*p是取指针p所指的地址内容,那么**p 是什么意思呢?

小飞爱使申华 答:这么解释吧,你把你女朋友家的地址记在了文曲星上了,这文曲星又放在了抽屉里,这么着, 这 p 就是你脑子里的抽屉, 

*p 就是文曲星,自然 **p 就是你媳妇家了。 所以如果你 p=NULL 或 *p=NULL,你就找不着你媳妇了,更有甚者,**p=NULL, 你媳妇家楼就

塌了(too bad)。

2。发表主题: BCB & Dev-c++的main函数是否有不同之处呢 
无双 答:所有合C语法的意义都一样 MAIN功能是由标准C制定的 而不是由厂商制定的

3。发表主题: 为啥我的C++编译器不认iostream?
它似乎只认iostream.h,另外它也不认using namespace std。。。
jadexo答:像using spacename std; 和string来定义都不行
发现LINUX7.0上的GCC和G++都可以通过编译并运行,在WINDOW上还是DEV-C++爽呀(看帮中说它好象也是GCC编译器)!!一切都通过! 

4。发表主题: 请教高手,还有版主呀,~~!!???急!!~    
[code:1:827f558fa8]
PS:一个数组 
1 2 3 
2 3 4 
4 5 6 

结果: 
1 2 3 
1 2 4 
1 2 6 
1 3 4 
1 3 6 
1 5 3 
1 5 4 
1 5 6 
2 3 4 
2 3 6 
4 2 3 
4 2 4 
4 2 6 
4 3 6 
4 5 6 
数据重复出掉,比如两个126,前后数据重复133,大概程序怎么做呀,请教高手呀啊,!~~~~~!!!!!!~~!!!!
[/code:1:827f558fa8]
评:没有问清楚问题,标题也可以作为反面教材!

5 发表主题: 用curses函数编写的菜单程序花屏问题    
当system("who");时出现花屏!如何处理?

field 答:执行system之前没有endwin() 

6。 发表主题: c中怎么表示16进制的字符串    
或者怎么把一串16进制的或者2进制的数字写到char 数组里面 
for examele 40 3c 需要写到char [2]里面去

无双 答:char a[]={0x40,0x3c}; 注意因为中间可能会有\0 所以这时使用strcpy等要小心 它们都是遇到\0就认为字符串结束

7。发表主题: [gcc] 请教“主函数与子函数不在同一文件”的方法。
我想把“main()”放置在“main.c”里,而“asd_file_manage()”和它下面的所有函数放置在另外一个文件里。

无双 答:看看函数声明方法 
main.c 
extern asd_file_manage(); //添加这个 
main(){ .... }

8。推荐几个网上的C/C++资源 
http://www.chinaunix.net/forum/viewtopic.php?t=121469

9。 发表主题: 请问如何查出字符串中包含了全角字符??????? 
无双 答:全角是保存在两个char中 
第一个>127 ,ascII都<127 

10.请问LEX和YACC是免费的么? 
无双 答:免费版分别是 flex bision

11.发表主题: 如何理解C语言中的指针 
[code:1:827f558fa8]下面的内容是我回复一个帖子时顺手写的,当时因为怕死机,所以写在了文件里。结果机器没死,帖子却被删了。现在找出来重新贴一

下。 

指针也是一个简单类型,其实例有自己的存储空间(指针变量),占据固定的大小(一般为CPU的位长,如32位机,指针占用32/8=4个字节)。

和其它的简单类型(int、char、double)相比,最大的不同在于指针变量的值是一个地址,代表内存空间的某个地址(这么说不严格,这里不

深究),因此我们说指针指向地址X,这也是其名称的由来。至于这个内存空间中存放的内容,与指针无关。 
用指针变量的dereferencing(即“*”操作符)可以访问其指向地址空间的内容。因为这时编译器要对该地址空间的内容进行解析,因此必须

知道此地址空间的类型(int、char、struct等),这时才涉及到指针指向的类型,如int*、char*等,表示指针指向的地址空间按照int类型或

char类型解释。 
需要强调的是,指针变量的值是任意的,也就是说指针变量可以指向任何地址空间。但因为操作系统的进程管理和内存管理机制,并不是什么

地址都是合法的,即并不是对任意地址的dereferencing都是合法的。但要注意这个不合法并不是语言的不合法,而是对系统机制的违背,因此

指针引起的非法dereferencing都表现为运行时的BUG,而编译器却无能为力。因此,保证指针变量的值指向的是合法的地址空间就成了C程序员

的责任,如指向其它的变量、函数或用malloc显示分配。这也成了C语言中最大的错误源泉。 
从上面的描述不难看出,当使用指针的时候一定要注意两个存储空间:指针变量自己的存储空间(固定大小,相对同一系统而言)和指针指向

的地址空间(由指针变量的值决定)。只要这两个空间都是合法的,程序的BUG会少许多。 

关于C语言指针与数组的关系,这里没有提及,因为只要理解了指针,其关系简单得很。 
另外,只是对一个帖子的简单回复,所以没有涉及更多。关于C语言的指针,有一本书专门论述,好像有600多页,我没看过,不知会论述到什

么程度。[/code:1:827f558fa8]

 odin_free 回复于:2003-07-28 22:57:28
普通问题:
1。以前写的一个小游戏(on sco) 含全部源程序(精华贴)
打包下载http://www.chinaunix.net/forum/uploadfile/five.jpg
原文http://www.chinaunix.net/forum/viewtopic.php?t=124139
2。发表主题: 关于监视父进程状态 
http://www.chinaunix.net/forum/viewtopic.php?t=124533

3。发表主题: 如何用gdb调试有参数的程序?
cacaty 答:set args 参数 
比如 ./a.out -c start.ini 
用 set args -c start.ini 然后run
帕帕虎 答:进入gdb后,在run后面加你原来程序的参数就OK了!同时你要注意路径

4。 发表主题: 三个在linux下C编程的问题 
2个文件读取去长度问题1个fork问题
http://www.chinaunix.net/forum/viewtopic.php?t=123675

5。 发表主题:AIX nix操作系统上如何"编程"获取进程的内存、CPU利用状况? 
只需要统计物理内存大小,和总的内存使用率.以及cpu的个数,和cpu的使用率!

蓝色键盘 答:操作/proc 精华区有个帖子里面有aix的proc代码。 
如果不要精确,用shell,或者程序调用shell的方式,或者程序中直接运行系统sysconf,top,tmstat等,用system。exec或者popen。其中

sysconf是个函数调用。

6。 发表主题: 请问在curses下如何清空输入缓冲区。    
请问在curses下如何清空缓冲区。好像用fflush(stdin)不行的。

yuxiaojie 答:flushinp()的函数

7。发表主题: typedef会在预处理中处理掉吗? 
无双答:http://e.swjtu.edu.cn/jiaowu/jxzd/wykj/cpro/chp9/9-10-1.htm 
typedef与#define有相似之处,如:typedef int COUNT;和 #define COUNT int 的作用都是用COUNT代表int。但事实上,它们二者是不同的。

#define在预编译时处理的,它只能作简单的字符串替换,而typedef是在编译时处理的。实际上它并不是作简单的字符串替换,例如:typedef 

int NUM[10];并不是用NUM[10]去代替int,而是采用如同定义变量的方法那样来定义一个类型(就是前面介绍过的将原来的变量名换成类型名

)。

8。发表主题: 问一个关于C的问题    
如何判断一个目录下是否有文件?(文件名称未知) 
而且文件有多个的情况如何呢? 
http://www.chinaunix.net/forum/viewtopic.php?t=124382里面有源代码linux的和win的

9。发表主题: 如何声明并定义函数数组? 
里面是关于指针的讨论http://www.chinaunix.net/forum/viewtopic.php?t=116849

10。发表主题: 关于socket返回值的探讨 
根据,帮助所说,socket 调用的返回值有以下情况: 
-1 :表示调用失败. 
n:表示成功.返回可以使用的描述符. 
但是,我想请教一下, 返回0时,是什么意思.什么情况下会返回0 ? 

无双 答:dup2(socketid,0) 或是先close (0 ) 
0是标准输入 许多程序中已使用 所以打开任何文件都不会是返回0 
除非先关闭标准输入
 
11。 发表主题: read和write是不是线程安全的    
比如同一个连接句柄nConnFd,一个线程在其上做read动作 
同时另一个线程试图在其上做write动作 
结果会这样,write阻塞?还是会出错,或者其他的。

无双 答:socket的话发送缓冲区与接收缓冲区是分开的 
所以可以同时进行
 

12。发表主题: The Function Pointer Tutorials
http://www.chinaunix.net/forum/viewtopic.php?t=124322学习的看看

13。发表主题: C++ [1>返回结构与原型问题.2>小概念.] 
http://www.chinaunix.net/forum/viewtopic.php?t=123276里面有些讨论

14。 发表主题: 请教几个模糊的概念!!动态编连,动态静态编译,等等 
[code:1:a8ea9b6f3e]请教几个模糊的概念!!动态编连,动态静态编译,等等 
好想程序编译的时候有动态和静态编译一说吧 
好像是跟库文件的联接问题 
还有动态连编和静态连编(还是编连阿)
[/code:1:a8ea9b6f3e]
[code:1:a8ea9b6f3e]这个问题涉及的东西很多,不过概念的清晰只要搞清楚他们之间 
的差别就没有问题了,静态库是档案库,他是若干目标文件的集合, 
在联编时,编译器抽取需要的目标文件连接到你需要的可执行文件中, 
而动态库则不然,在你的可执行文件中不存在库代码,而只给出一个 
函数的入口条目,在执行时系统为你自动连接对应的库,这里如果单纯 
讨论性能的优略不是太有意义,关键是如果库代码有所改变,对于 
程序发行更方便,也就是说,如果你的改变仅限于库代码,那你只需要 
更新对应的库文件就可以了,当然你要保证调用时的入口参数没有 
变化。 
这里我给出一个有意义的建议,就是生成静态库时,要合理组织你的 
目标文件(也就是 .o )除非有必要,否则不要把无关的函数集中在 
一个源文件中。
[/code:1:a8ea9b6f3e]

 odin_free 回复于:2003-07-28 22:57:50
15。发表主题: 我的C语言编程例程一(Solaris和FreeBSD下取得CPU频率) 
http://www.chinaunix.net/forum/viewtopic.php?t=123356学习的看看:D

16。发表主题: 请教一个用c连接mysql数据库的问题 
http://www.chinaunix.net/forum/viewtopic.php?t=122687

17。发表主题: 怎样用c实现ftp的自动传输(不用shell)?
我想用怎样用c实现ftp的自动传输(不用shell)请大家帮忙看一下。以下是我写的有问题的程序,该怎样改。 
[code]#include<stdio.h> 
#include<unistd.h> 
void main() 

execl( "/usr/bin/ftp", 
"ftp -i -n", 
"192.9.212.62", 
"21", 
// "root" /*用户名*/ 
// "root" /*密码*/ 
NULL); 
}[code]
zhlei 答:[code]main(int argc,char **argv) 

  char buf[256]; 
  FILE *fp; 
  fp=popen("ftp -inv *.*.*.*","w"); 
  if(fp==NULL) 
  { 
    perror("popen"); 
    exit(1); 
  } 
  fprintf(fp,"user ***  ***\n"); 
  fprintf(fp,"get mail.test\n"); 
  pclose(fp); 
  printf("ok\n"); 
} [/code]
 
18。发表主题: 原始套节口操作函数示例 
http://www.chinaunix.net/forum/viewtopic.php?t=123310
评:绝对精华,包含tcp、udp和ip层如何操作。

19。 发表主题: 2种不同的if语句写法,对性能有没有影响??? 
第一种: if( 条件1 && 条件2 &&条件3 ) 
{...}; 
第二种: if (条件1) 
if (条件2) 
if (条件3) 
{...} 
蓝色键盘 答:[code]在不知道具体要什么条件的情况下,无法比较。 
1、第一种: if( 条件1 && 条件2 &&条件3 ) 
{...}; 
大多数编译程序,发现条件1为假,那么就判断完毕了。如果三个条件都为真,那么效率与三个的顺序和安排也有关系,例如最具有限制性的和

很少出现的,频繁出现的都会影响到这里的效率。 
2、第二种: if (条件1) 
if (条件2) 
if (条件3) 
{...} 
以次判断,和第一个一样。如果三个条件都为真,那么效率与三个的顺序和安排也有关系。 
如果第一个为假并且顺序安排和上面的一样的话,效率差不多一样。
我感觉应该第一种能快一些,不知道对不对
[/code]

20。发表主题: ORACLE数据库PROC编程经验介绍 (不知道贴过没右)
http://www.chinaunix.net/forum/viewtopic.php?t=122117

21。发表主题: 如何理解mmap的特征:所有的I/O都在内核的掩盖下完成.? 
http://www.chinaunix.net/forum/viewtopic.php?t=122221不少讨论

22。发表主题: 怎么样在unix下用c来获得文件大小 
各位老大,谁知道啊,否则俺还要写个shell,然后在c里system,通过ls -l和awk 
sjha7285[code]#include <sys/stat.h> 
main() 

struct stat sb; 
fstat(fd,&sb); 
文件长度=sb.st_size 
... 
}[/code]

23.发表主题: scanf和gets连用的问题。
http://www.chinaunix.net/forum/viewtopic.php?t=122818
 蓝色键盘答:刷新一下标准输入的缓存fflutsh 
或者将stdin的缓存设置位NULL,用setvbuf或者setbuf。

24。发表主题: 再论传递文件描述符 
http://www.chinaunix.net/forum/viewtopic.php?t=121580精华讨论

25。发表主题: AIX上的gcc编译器,怎样使用超过256M的内存?
首先ulimit -d 把DATA加大到256MB以上,否则会出来IO abort错误 
然后 gcc默认只使用32位指针, 加-maix64强制使用64位的 
g++ -maix64 -o tst tst.cpp 就OK了. 

程序当了多少内存可以用ps auxwww|grep tst来看 
RSS就是使用的内存数量,单位为K


26。 发表主题: 请教在C中怎么实现动态分配内存给数组?
http://www.chinaunix.net/forum/viewtopic.php?t=120743讨论

27。1。发表主题: 安裝好gcc 以後在/usr/local/bin 下為何只能敲./gcc 才能run 

小飞爱使申华答:
原因是在PATH中没有当前路径。如果是bash or bsh, 
try: 
PATH=$PATH:. 
export PATH

28。 发表主题: MIME编码介绍 
http://www.chinaunix.net/forum/viewtopic.php?t=122793

29。lovetjl 发表主题: 在c中是否有filelength函数直接获取文件的大小!    
在c中是否有filelength函数直接获取文件的大小! 

freecoder 答:lstat(const char *file_name, struct stat *buf) 
struct stat 中的st_size就是文件的大小

 odin_free 回复于:2003-07-28 22:58:05
30。 发表主题: 关于recv数据包阻塞的一个问题,大家帮忙看看。
如果数据包的长度大于定义的最大长度那么就循环接受数据,然后保存到缓冲区中,问题是当接受结束的时候(recv不到数据),程序阻塞在

recv之前,运行并没有通过recv,所以就没有跳出while循环,这样总也不能接受一个完整的数据包,请问如何能在接受结束之后跳出while从而

循环接收一个完整的数据包? 
http://www.chinaunix.net/forum/viewtopic.php?t=122243相关讨论

31。发表主题: strcat还有错误??奇怪?? 
http://www.chinaunix.net/forum/viewtopic.php?t=120650讨论

32。发表主题: 学习《进程间通信(英文影印)》中不明白的一段话
http://www.chinaunix.net/forum/viewtopic.php?t=119704

为解决问题:
1。发表主题: 能否给段ioctl传递socket描述符的代码?
http://www.chinaunix.net/forum/viewtopic.php?t=124251
评:ioctl使用比较繁复,不好答。

2。SunOS5.8 CC4.2 如何编译,才能用gdb进行源码调试?
http://www.chinaunix.net/forum/viewtopic.php?t=123697

3。 发表主题: 斑竹及各位大虾,看看这个关于区位码的问题谁能解决?
http://www.chinaunix.net/forum/viewtopic.php?t=123861

4。发表主题: 求助啊:又是类型的错 
http://www.chinaunix.net/forum/viewtopic.php?t=123585

5。发表主题: 谁知道在aix上使用动态连接库怎么编译?    
在scounix上编译是加 -dy选项,在aix上用xlc_r4编译该用什么选项呢?
http://www.chinaunix.net/forum/viewforum.php?f=23&topicdays=90&start=60 

6。发表主题: 编译错误,请大家看一看!!! 
http://www.chinaunix.net/forum/viewtopic.php?t=121005

7。发表主题: 链表排序问题求助! 
http://www.chinaunix.net/forum/viewtopic.php?t=125442
他就要个例子

 odin_free 回复于:2003-07-28 22:59:34
看见好多问题都难以分类,深为自己水平低下为耻
偶要加油了

 小飞爱使申华 回复于:2003-07-28 23:05:19
哗哗哗!掌声鼓励。很不错了,我都不敢接这单活,怕搅浑了。

 无双 回复于:2003-07-28 23:28:38
很不错

另外这只是一个锻炼

还有就是也不用把每个问题都写出来 只要把自己认为有用的 比较重要的答案写出来就可以了

odin_free   祝你早日成功 明天我会接着你今天整理后的继续:)

 li2002 回复于:2003-07-28 23:58:56
鼓掌!!严重支持!!!

 蓝色键盘 回复于:2003-07-29 13:53:59
odin_free, 这样详细的整理,用不了半年的时间,相信你的视野要比我的开阔的多。你会在不知不觉中成长和提高的。

在此感谢odin_free朋友精彩的整理。
也希望你能在这里学习到更多的东西。

 Hotown 回复于:2003-07-29 18:07:04
ok!
不错!

 odin_free 回复于:2003-07-29 20:25:50
偶感觉论坛里很能开阔知识面,涉及很多自己见也没见过的问题,学习中,而且看到很多基本问题也能在自己写程序中多留意,很好的锻炼,唯一的不足就是水平有限,有的问题有人回答了,偶查了半天都不知道是不是正确回答,还好友无双和蓝色键盘各位老大会再次对我的帖子整理,偶也不太担心整理出来误导别人了。:D
:D再次感谢各位的支持,整理的东西大家如果能用上就更好了

 odin_free 回复于:2003-07-29 20:26:42
蓝色键盘老大,偶的水平1年2年是赶不上您了~:)

 无双 回复于:2003-07-29 20:26:55
ok
那这周的你来整理了:)

我找个时间把它们加到FAQ中去
再整理一下FAQ

 odin_free 回复于:2003-07-29 20:43:54
[quote:ae88bbaf69="无双"]ok
那这周的你来整理了:)

我找个时间把它们加到FAQ中去
再整理一下FAQ[/quote:ae88bbaf69]     

ok
无双老大下放机会真快~~:D :lol:

 无双 回复于:2003-07-29 20:46:18
我怕影响你工作:)

 fls 回复于:2003-07-29 21:27:36
up一下

 clion 回复于:2003-07-29 21:43:01
看到我的简单问题居然被odin_free整理列举出来,偶感到特别荣幸和感激,同时也为论坛里有这么多的热心人而高兴,谢谢odin_free,谢谢大家的帮助!

 odin_free 回复于:2003-07-29 21:54:19
[quote:ff734dc0d0="clion"]看到我的简单问题居然被odin_free整理列举出来,偶感到特别荣幸和感激,同时也为论坛里有这么多的热心人而高兴,谢谢odin_free,谢谢大家的帮助![/quote:ff734dc0d0]     

问题简单 多数都会遇见
到了复杂的倒是不是每个人都能遇到了 :arrow: 
所以我一直感觉论坛里多总结简单问题,帮助新手能少问几个问题,
那么大家都能更快地走入更高的水平,集中精力学习更复杂的知识,多好
更希望你和所有来这里的朋友多看看faq,多搜索,学会自己解决问题,也能很快去帮助别人。 :D  :D

 weven 回复于:2004-04-14 20:58:41
linux下编程如何计算每秒的打印输出(clock tick)数,应用库函数sysconf吗?可是具体怎么用呢? :mrgreen:

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有