免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6496 | 回复: 9

[C] 关于结构体和指针的一个问题 [复制链接]

论坛徽章:
0
发表于 2012-02-25 01:24 |显示全部楼层
本帖最后由 haicg 于 2017-06-24 16:53 编辑

struct utmp *buf ;
printf("%s\n", ctime( &((long int)(buf->ut_line)) ));与long i;printf(" ");printf("%10ld", buf->ut_time);i=(long int)(buf->ut_line);这段语句有什么区别啊?我感觉他们在功能上是一致的。但是在gcc下第一句无法进行编译,提示有语法错误。

不好意思,昨天的问题描述错了,真是对不起大家了。下面的是问题的描述:
程序一:
void show_utmp( struct utmp *buf )
{
        long i;
        printf("%-s",buf->ut_user);
        printf(" ");
        printf("%-8.8s",buf->ut_line);
        printf(" ");
        i=(long int)(buf->ut_line);
        printf("%s\n", ctime( &i) );
}
程序二:
void show_utmp( struct utmp *buf )
{
        printf("%-s",buf->ut_user);
        printf(" ");
        printf("%-8.8s",buf->ut_line);
        printf(" ");
        printf("%s\n", ctime( &((long int)(buf->ut_line)) ));
}
程序一可以编译通过,且正确运行。程序二有比编译错误,具体的错误是:error: lvalue required as unary ‘&’ operand.

多年之后看到了,自己的帖子,感受颇丰。
程序二的问题最下面的朋友已经帮忙回复了,目的就是为了实现类型的强制转换。

论坛徽章:
0
发表于 2012-02-25 09:48 |显示全部楼层
不懂你buf都没有指定具体内存,怎么第二个还能编译过呢?

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2012-02-25 11:26 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-02-25 16:09 |显示全部楼层
没看出来你想干啥

论坛徽章:
0
发表于 2012-02-25 23:40 |显示全部楼层
回复 2# e_xiaguibin
我上次问题描述不清,现在已经修改过了,谢谢帮助哈。

   

论坛徽章:
0
发表于 2012-02-25 23:55 |显示全部楼层
  1.   printf("%s\n", ctime( &((long int)(buf->ut_line)) ));
复制代码
改为
  1.   printf("%s\n", ctime( ((long int*)(buf->ut_line)) ));
复制代码

论坛徽章:
0
发表于 2012-02-26 00:00 |显示全部楼层
哦,错了。我还以为你想直接用buf->ut_line存东西呢. buf->ut_line本身是个地址(你可以简单理解他就是个常数),不是个变量,是不能取地址的。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
发表于 2012-02-26 00:04 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
发表于 2012-02-27 22:47 |显示全部楼层
回复 6# blackuhlan
如果按照上面做法,是没有语法错误了,但是两个得到的结果是不一样的。

   

论坛徽章:
0
发表于 2017-02-07 19:15 |显示全部楼层
程序一使用&取得i的地址,但是程序二使用&取得是转换成long int的一个数值啦
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP