免费注册 查看新帖 |

Chinaunix

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

谁能解释一下这个函数的输出 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-12-09 17:58 |只看该作者

回复 #10 mingyuexuan 的帖子

指针步进值不同

论坛徽章:
0
12 [报告]
发表于 2009-12-09 18:09 |只看该作者
告诉楼主一句精华:C语言是弱类型语言,,就和javascript中的变量使用var声明一样,C语言中没有类型这一说法,,char, int ,fload, struct等类型,只不过是为了方便使用而设计的,没有任何实际意义,C语言中的所有类型,都是只是一块内存而已,至于这块内存的大小和内容,随你的便。。。。。。

论坛徽章:
0
13 [报告]
发表于 2009-12-09 19:19 |只看该作者

回复 #10 mingyuexuan 的帖子

这还没起作用?
难道你还指望着s会发生改变?how?

论坛徽章:
0
14 [报告]
发表于 2009-12-10 09:40 |只看该作者
步进值不同大家都明白的...

论坛徽章:
0
15 [报告]
发表于 2009-12-10 09:43 |只看该作者

回复 #12 _unistd_ 的帖子

确实很经典!

论坛徽章:
0
16 [报告]
发表于 2009-12-10 09:45 |只看该作者

回复 #13 churchmice 的帖子

其实我的期望是在我写的那个例子里面,编译器能够报错...

论坛徽章:
0
17 [报告]
发表于 2009-12-10 09:47 |只看该作者
对C语言又有了新的认识啦,感谢各位大侠的帮助

论坛徽章:
0
18 [报告]
发表于 2009-12-10 09:51 |只看该作者
对指针进行强转,只是告诉编译器强转后应该从内存中读多少个字节,像LZ这样

unsigned long p = 0;
p = (int *)s;

我想可能再有一个隐式的转换吧!

到了
printf("p = %s",p);

编译器才不管p到底原本是什么,直接当它是个地址(也许会当成是char*),无差别的输出到'\0'为止

论坛徽章:
0
19 [报告]
发表于 2009-12-10 10:02 |只看该作者
由于历史原因,C语言一般工作在比较底层的位置,以效率和简洁见长,对类型的处理就不如C#/Java这样类型安全的语言。

论坛徽章:
0
20 [报告]
发表于 2009-12-10 13:57 |只看该作者

回复 #16 mingyuexuan 的帖子

你都已经强制类型转换了,编译器再报错你就该骂编译器傻x了。
编译器顶多给你报一个warning
开-Wall就能看到了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP