散分--顺便问几个问题

clhposs 2008-02-24 11:59:50
我买了C专家编程
看了下
有些地方看不懂,看得懂的地方发现我以前学过,或者是我一直都是这么思考的
没发现C专家编程的好啊 为什么这么多人说这本书好呢?

还有 有个问题这个问题有一定困饶着大多数学C的朋友

C可以干什么 我真的不知道 我现在不知道拿他用什么

我想深入学习C 却不知道C能实现什么目的 这样学下去不知道如何是好?

所以希望大家给点意见

或者大家如果觉得是我基础不好 也可以推荐一本书 分不会少的!
...全文
183 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhongping 2008-02-25
  • 打赏
  • 举报
回复
已阅
argusun 2008-02-25
  • 打赏
  • 举报
回复
jf
chlaws 2008-02-24
  • 打赏
  • 举报
回复
那书确实不错的.估计你看没懂,很多都涉及到平时你不知道的东西,仔细点看,别就浏览着看,那是没什么效果地
pengxn 2008-02-24
  • 打赏
  • 举报
回复
我想深入学习C 却不知道C能实现什么目的
-----------
个人意见是还是带着学习的目的进行学习的好.
毕竟一个人的精力有限,一个人可以同时了解熟悉多方面的知识,但都要做到精通,似乎太难了...
langhua0001 2008-02-24
  • 打赏
  • 举报
回复
我们目前做单片机编程,用的就是C C 能做很多事情 学多了不会有害处的 加油!
clhposs 2008-02-24
  • 打赏
  • 举报
回复
恩 是的 谢谢楼上
独孤过儿 2008-02-24
  • 打赏
  • 举报
回复
C能做很多有意思的事,比如写操作系统,开发驱动,通信协议栈等等比较底层,比较核心的东西;当然,C也可以做上层的东西,比如上层应用

程序,管理系统等,但是做那些C就没有优势了。因为C相当于只是给你一些最最基本的元素,你想去做什么,必须要你自己去重新组织这些元

素,去重新合理的安排它们,让它们能够发挥出最大的威力,当然,只要你有点子,就可以将这些元素玩的异常炫目...

学完了C的基础语法,最好是结合一些实际的例子去消化,去提高,要不然头脑中只有一个空洞的C,这样空洞的C和政治的理论没啥区别了...c

的项目在sourceForge上有很多,你可以down下来代码仔细研究...

最后一点忠告,别随随便便说一本拥有圣誉的书不好,毕竟那么多人说它好,肯定是有依据的。如果你觉得它不好,那只有两个可能,一是你还

没达到那个层次,所以看不出来它好;另一个是这本书不适合你...你觉得呢?
yesiwumian 2008-02-24
  • 打赏
  • 举报
回复
51 avr arm
yesiwumian 2008-02-24
  • 打赏
  • 举报
回复
我没看过,我也想听。。。
独孤过儿 2008-02-24
  • 打赏
  • 举报
回复
先占个沙发,然后慢慢回...
yanbeifei168 2008-02-24
  • 打赏
  • 举报
回复
c搞底层
xiao234666 2008-02-24
  • 打赏
  • 举报
回复
我现在在做TWAIN(关于扫描仪与计算机通讯的一个接口)的应用程序,用的就是C,C是很底层的东西,你要它干嘛它就干嘛,很少象高级语言那样容易出错.
唐巧 2008-02-24
  • 打赏
  • 举报
回复
其中有一个问题,就是static的有一个用处是:使函数只能在本cpp文件中调用。
这个问题我在今年1月份面试IBM的实习生的时候被问到了,当时面试官问我static有哪些用处,我就只回答了两个。第三个功能当时没有回答出来。
不知道楼主有没有认真看书中的相关内容。
唐巧 2008-02-24
  • 打赏
  • 举报
回复
<C专家编程>真的是一本不错的书,我把我的学习笔记贴一些给你看。
我不知道下面的内容你是不是都很理解了,如果你在看书前就很清楚我认为你真的是高手了。
这个笔记还没有整理完,但我已经觉得收获很多了。

1、由于sizeof返回值是unsigned int而造成的错误。P24
	/*
sizeof返回的类型是无符号整数。
在if语句中,出现测试signed int和unsigned int之间的测试相等性。
所以d被升级为unsigned int类型,而-1被转换成unsigned int的结果将会是一个
非常巨大的数,所以表达式为假。
*/

#include <stdio.h>
#include <stdlib.h>
int array[] = { 1, 23, 4, 5, 43, 3};
#define TOTAL (sizeof(array)/sizeof(array[0]))

int main()
{
int d = -1, x;
if (d <= TOTAL)
printf("no error\n");
else
printf("error!\n");
system("pause");
return 0;
}


2、#pragma P26
用于向编译器提示一些信息,比如把某个函数变成内联函数,或者取消边界检查。
下面例子代码为加入链接的lib文件:
#pragma comment(lib, "tetris_lib_vc6_release.lib")

3、关于switch P29
switch中的default可以出现在任何位置。如果没有default,则表示不匹配的话,整个switch什么都不做。

4、97%的switch中的case都对应有break,所以C语言的这种设计是不太好的。 P32

5、P34,
字符串可以用"" ""这种方式来连接。以便不必非要写在一行。
如:printf("Tang" "Qiao");
对于这种方式的使用要小心,因为有可能在字符串数组初使化的时候因为少写一个分隔的逗号,而使得字符串数组中的两个元素变成了一个元素。
如:
char *array[]={"abc" "bcd"}; //这里中间少一个逗号就把两个元素变成了一个。


6、static关键字的用法。 P36
1>实现局部静态变量,用于取得局部变量上次的值。
2>使类成员的变量只有一个实例,每个实例取得的变量值都是相同的。
3>使函数只能在本cpp文件中调用。(默认的时候,函数是可以被外部的cpp文件以extern方式来调用的) (重要!在IBM面试中被问过此问题)
在编大型程序的时候,应该尽量使函数局部化,否则可能覆盖掉系统函数或引起命名冲突。
eg:
void fun(); // 在任何地方可见
extern void fun(); // 同上
static void fun(); // 只在这个文件中可见

7、把gets变成fgets: P42
	char line[100];
gets(line);
上面的代码变成下面更安全:
char line[100];
if (fgets(line, sizeof(line), stdin)==NULL)
exit(1);
8、可以将数组放到结构体中,以实现整体赋值。
结构体中可以用位域来标识,用于表示该变量所占用的比特位的大小。

9、P129 setjmp/longjmp最大的用途是错误恢复,只要还没有从函数中返回,一旦发现一个不可恢复的错误,可以把控制转移到主输入循环,并从那
里重新开始。longjmp与goto的区别在于:
1>goto不能跳到另一个函数中。
2>longjmp可以保存一些变量的值。

相关的示例代码:
	#include <stdio.h>
#include <stdlib.h>
#include <setjmp.h>

jmp_buf buf;

void call() {
printf("in call() function\n");
longjmp(buf, 1);
printf("You'll never be here.Because I have used 'longjmp'. \n");
}
int main()
{
if (setjmp(buf))
printf("back in main\n");
else {
printf("first time through \n");
call();
}

system("pause");
return 0;
}
运行输出结果:
first time through
in call() function
back in main
killer2008_520 2008-02-24
  • 打赏
  • 举报
回复
c写驱动跟嵌入式咯,往底层走就对了
avalonBBS 2008-02-24
  • 打赏
  • 举报
回复
先试着用C写些小东西 ,然后再回头看这本书,然后再写,再看...
jaskist 2008-02-24
  • 打赏
  • 举报
回复
C 写嵌入式的吧

clhposs 2008-02-24
  • 打赏
  • 举报
回复
顶起来 期待高手回答
wax19821022 2008-02-24
  • 打赏
  • 举报
回复
推荐《高质量C++-C编程指南》,呵呵。
ryfdizuo 2008-02-24
  • 打赏
  • 举报
回复
c是很基础的,很底层的,更加接近于机器思维,所以学起来有难度,非计算机专业的一般不作要求的,
加载更多回复(5)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧