鱼C论坛

 找回密码
 立即注册
查看: 4705|回复: 15

C语言,求熬过来的大牛哥哥们点拨一下小弟!谢谢!

[复制链接]
发表于 2013-1-23 01:09:03 | 显示全部楼层 |阅读模式
5鱼币
求解?看教程,小甲鱼以前出过个问题,但是没找到,自己也最终也没有想明白,求牛哥点拨一下。代码如下:
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int a[10];
  5.         int *p;
  6.         int i;
  7.        
  8.         p=a;
  9.         for(i=0; i<10; i++)
  10.         {
  11.                 scanf("%d",p++);
  12.         }
  13.         printf("\n");
  14.        
  15.         for(i=0; i<10; i++,p++)
  16.         {
  17.                 printf("%d        ",*p);
  18.         }
  19.         printf("\n");
  20. }
复制代码



另外,还有个不请之请的问题,如何学会使用API,参数过多不容易记,不知道过来的大哥怎么练的,难道只是一个一个的去试去写吗?或是只是多看示例代码就行了吗?假设,我要写个窗口程序,我知道要 注册窗口类--》创建窗口--》显示窗口-等,但怎么了解该用那些函数来实现呢?纠结在这里了?也同样求点拨,或向各位求点学习经验,望不吝赐求一二,非常感激,谢谢!


最佳答案

查看完整内容

windows SDK程序(就是你说的用windows API直接编写的程序)正常人不可能记住所有的API,一般都是拷贝MSDN上的代码,再修改的。API参数多,确实让人很头痛,这是因为API是为了通用目的编写的,通用的东西就是有很多不确定的参数需要我们去设定。但是对于我们自己写的程序,一般不具备什么通用性。因此我建议不要直接使用原API,在API之上封装一层自己的函数,其功能就是把一些对于我们自己的应用固定不变的参数直接填写上去;还有 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-23 01:09:04 | 显示全部楼层
windows  SDK程序(就是你说的用windows  API直接编写的程序)正常人不可能记住所有的API,一般都是拷贝MSDN上的代码,再修改的。API参数多,确实让人很头痛,这是因为API是为了通用目的编写的,通用的东西就是有很多不确定的参数需要我们去设定。但是对于我们自己写的程序,一般不具备什么通用性。因此我建议不要直接使用原API,在API之上封装一层自己的函数,其功能就是把一些对于我们自己的应用固定不变的参数直接填写上去;还有把一些琐碎的,固有的调用流程封装成一个简单的函数。这样,当你再次编写类似领域的程序时,使用这些函数,写起来就很轻松了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 06:52:36 | 显示全部楼层
lz贴出代码页没说明问题啊。晕。。。这段代码有问题的,跳出第一个for循环的时候p = &a[10];的,已经越界了,其后应该加一句 p = &a[0];让p重新指向数组起始地址。
另:API不是靠记的,原理要理解,用多了就会了,记不住查下就好了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 11:47:06 | 显示全部楼层
楼上正解。。
而且确实没说明楼主想要知道的 问题在哪。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-23 19:43:07 | 显示全部楼层

哥,这例子本就是有问题的,是小甲鱼教程中给出的,问的就是看我们能不能分析出问题出在什么地方,正因为找不出问题的原因,方抄上来给各位哥哥们帮忙看看。所以便不知道该怎么描述了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-23 19:44:58 | 显示全部楼层
仰望天上的光 发表于 2013-1-23 17:09
windows  SDK程序(就是你说的用windows  API直接编写的程序)正常人不可能记住所有的API,一般都是拷贝MSDN上 ...

哦!谢谢版主点拨。可否再问一下,我该如何知道我的程序用到哪些函数呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 20:47:44 | 显示全部楼层
lyoal 发表于 2013-1-23 19:44
哦!谢谢版主点拨。可否再问一下,我该如何知道我的程序用到哪些函数呢?

斑竹说得比较透彻了,针对这个问题呢,答案很显然,写程序,需要用什么功能,查下实现这些功能用到API,用一次就知道某个函数有什么功能了。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 21:09:50 | 显示全部楼层
lyoal 发表于 2013-1-23 19:44
哦!谢谢版主点拨。可否再问一下,我该如何知道我的程序用到哪些函数呢?

对于windows API编程,书还是要看的,不过不能像刚学C语言那样看,而要结合MSDN看。看书主要就是了解消息驱动的思想还有大概知道那些主要的函数的用途以及它们在MSDN中的位置,这样自己写程序的时候才知道到msdn的什么地方去抄代码。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-23 21:32:01 | 显示全部楼层
仰望天上的光 发表于 2013-1-23 21:09
对于windows API编程,书还是要看的,不过不能像刚学C语言那样看,而要结合MSDN看。看书主要就是了解消息 ...

版主回复好及时,再次表示感谢!从版主的回复中,我理解的是,对于API函数,需要用一个参考一个最后收集起来,或根据MSDN中提供的示例代码,实现自己所需要的功能函数,自己封装起来备用。学习API靠的是日积月累的实践。不知道我这样的理解用在学习合不合适?谢谢

还有就我提出的那段代码,前半截的要求输入应该是没错的。但后边,我总认为没有问题,p是指针变量,*p就相当于是个是变量a,for(i=0; i<10; i++, p++),意思不就是利用指针对客户端的输入的值进行遍历吗?但输出的结果为什么就是不是想要的结果呢?suiyan 朋友的解释,我没能看懂?是不是应该把 第二for循环中的p++,改为p--就可以了呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 21:43:16 | 显示全部楼层
lyoal 发表于 2013-1-23 21:32
版主回复好及时,再次表示感谢!从版主的回复中,我理解的是,对于API函数,需要用一个参考一个最后收集起 ...

1.不可能看所有的API函数,把主要的看看就可以了。学习阶段大概是这样的:
a.抄教程上的代码,编译运行
b.在MSDN上找教程上代码的api函数,并简单修改
c.基本上能查MSDN写出一些小程序
d.自己封装对自己有用的API函数供自己使用(这个要求比较高,不适合初学者做,否则你做了也会发现还不如原来的API好用)

2.你写的那题,在两个for循环之间加个p = a;就可以了自己想怎么回事吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 21:54:00 | 显示全部楼层
"假设,我要写个窗口程序,我知道要 注册窗口类--》创建窗口--》显示窗口-等", 如果你连这短短的80行代码都记不住,那算了吧。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-23 23:16:57 | 显示全部楼层
不能为空 发表于 2013-1-23 21:54
"假设,我要写个窗口程序,我知道要 注册窗口类--》创建窗口--》显示窗口-等", 如果你连这短短的80行代码都 ...

哥,俺记得住,只是求个学习API的学习法。可能是表达能力差,汇编俺坚持下来了,虽说后读写磁盘没搞定吧,还好能看懂汇编代码了。谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-23 23:22:56 | 显示全部楼层
不好意思,理解错了你的意思~:handshake
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-23 23:24:49 | 显示全部楼层
仰望天上的光 发表于 2013-1-23 21:43
1.不可能看所有的API函数,把主要的看看就可以了。学习阶段大概是这样的:
a.抄教程上的代码,编译运行
...

版主的话,俺记下来,以后不会再问此类问题了,实践才是硬道理!
但是小弟还有问题,望版主不要嫌俺烦,感激之至!
WIN7 32位 下部署VC6++ 我按我搜索到的方法都试过了,还不能正常的创建工程,也不能点击打开按钮打开源文件,选项中的路径问题排除了,还有安装过程中自定义去除TOOLS中的OLE......的选项也操作了,还是没能解决。不知版主有没有好的方法?
这个VC6++运行环境依赖系统的哪些服务?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-1-24 08:48:57 | 显示全部楼层
lyoal 发表于 2013-1-23 23:24
版主的话,俺记下来,以后不会再问此类问题了,实践才是硬道理!
但是小弟还有问题,望版主不要嫌俺烦, ...

用VS2003或者更高版本的集成开发环境比较好,VC6的话即使在win7下安装成功以后还户有很多的问题,微软都已经不维护VC6了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-1-24 21:28:06 | 显示全部楼层
仰望天上的光 发表于 2013-1-24 08:48
用VS2003或者更高版本的集成开发环境比较好,VC6的话即使在win7下安装成功以后还户有很多的问题,微软都已经 ...

好的,谢谢版主!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-8 21:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表