免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 无风之谷
打印 上一主题 下一主题

对C语言指针的讨论:应当如何理解、使用指针?《狂人C:程序员入门必备》有奖试读 [复制链接]

论坛徽章:
0
91 [报告]
发表于 2010-12-15 13:16 |只看该作者
gvim在80楼说的确实好,但是往下是汇编,往上是oo,虽然与C联系紧密,但是还是有点距离,如gvim在82楼说的一样,还是约束在C的范畴内讨论指针的意义更好些,C程序员大量的正确错误使用指针。

论坛徽章:
0
92 [报告]
发表于 2010-12-15 14:16 |只看该作者
其实对于一个东西不同的人有不同的理解,一般变量的指针还是比较好理解的,如果是数组,多维数组,函数的指 ...
bkp643 发表于 2010-12-15 11:33


数组名确实有些奇特的性质(比如作为左值和右值时类型不同)
只要理解了这些性质
倒也没什么难的

论坛徽章:
0
93 [报告]
发表于 2010-12-15 14:17 |只看该作者
其实指针就是你不用记住内存地址但同时还可以对地址进行操作的一个工具而已。这样就不必去计算每个变量、语 ...
x9x9 发表于 2010-12-15 11:44



    这个概括好。同意

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
94 [报告]
发表于 2010-12-15 14:36 |只看该作者
4.   void *类型的指针究竟是可以指向任何对象还是不指向任何对象?

这句话应该有错误吧。C语言中应该没有类和对象的概念吧。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
95 [报告]
发表于 2010-12-15 14:36 |只看该作者
回复 93# KBTiller


    不如用汇编。呵呵。

论坛徽章:
0
96 [报告]
发表于 2010-12-15 14:39 |只看该作者
按照donotblock、幻の上帝 网友意见修改的程序代码9-29
欢迎尽情拍砖(反正有他们俩个先顶着


程序代码9-29

/*
    题目:21点36分23秒后再过3小时28分47秒是几点?
*/

#include <stdio.h>
#include <stdlib.h>

#define MIAO_SHANGXIAN 60 // 秒数的上限
#define FEN_SHANGXIAN  60 // 分数的上限
#define SHI_SHANGXIAN  24 // 时数的上限

#define SHIJIAN struct shijian

SHIJIAN {
         int shi ;
         int fen ;
         int miao;
        } ;

void jingguo_shijian( SHIJIAN * , SHIJIAN );

int main ( void )
{
    SHIJIAN shijian = { 21 , 36 , 23 } , shijian_zengliang = { 3 , 28 , 47 }  ; //时间和时间的增量
   
    printf ( "%d点%d分%d秒后再过" , shijian.shi , shijian.fen , shijian.miao );
    printf ( "%d小时%d分%d秒后是" , shijian_zengliang.shi ,
                                    shijian_zengliang.fen ,
                                    shijian_zengliang.miao )                  ;
    jingguo_shijian ( &shijian , shijian_zengliang )                          ;
    printf ( "%d点%d分%d秒\n" , shijian.shi , shijian.fen , shijian.miao )    ;
    system( " PAUSE" ) ;
    return 0;
}

/* jingguo_shijian()函数功能:
   根据指向时间的指针和时间的增量
   改变时间的值
*/

void jingguo_shijian( SHIJIAN *p_shijian , SHIJIAN shijian_zengliang )
{
   p_shijian -> shi += shijian_zengliang.shi ;
   p_shijian -> fen += shijian_zengliang.fen ;
   p_shijian -> miao += shijian_zengliang.miao ;
   p_shijian -> fen += p_shijian -> miao / MIAO_SHANGXIAN ;
   p_shijian -> miao %= MIAO_SHANGXIAN ;
   p_shijian -> shi += p_shijian -> fen / FEN_SHANGXIAN ;
   p_shijian -> fen %= FEN_SHANGXIAN ;
   p_shijian -> shi %= SHI_SHANGXIAN ;

}

论坛徽章:
0
97 [报告]
发表于 2010-12-15 14:43 |只看该作者
回复  KBTiller


    不如用汇编。呵呵。
renxiao2003 发表于 2010-12-15 14:36


不同意
C的优点就是恰到好处的抽象

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
98 [报告]
发表于 2010-12-15 15:00 |只看该作者
回复 97# KBTiller


    抽象是面向对象语言的特性之一,C面向对象吗?

论坛徽章:
0
99 [报告]
发表于 2010-12-15 15:01 |只看该作者
回复 97# KBTiller


    同意killer,虽然用汇编来理解C会更加深入和深刻,但是如果深入到汇编来描述估计这本书和这个话题要改变下了,建议还是在C的基础上讨论吧

论坛徽章:
0
100 [报告]
发表于 2010-12-15 15:04 |只看该作者
我想Killer所谓抽象的意思不是oo的抽象,而是我们认知的抽象,汇编对大多数程序员来说太抽象了,而C作为高级语言对我们来说比较容易理解,可能是这个意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP