免费注册 查看新帖 |

Chinaunix

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

C语言中一个指针占用多少字节 [复制链接]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
31 [报告]
发表于 2011-09-19 09:46 |只看该作者
回复  MMMIX


   

    很对。但很多人不清楚。比如说“指针的尺寸都一样”
pmerofc 发表于 2011-09-19 09:40



    这你就过于想当然了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
32 [报告]
发表于 2011-09-19 09:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
33 [报告]
发表于 2011-09-19 10:02 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
34 [报告]
发表于 2011-09-19 11:05 |只看该作者

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
35 [报告]
发表于 2011-09-19 11:07 |只看该作者
本帖最后由 MMMIX 于 2011-09-19 11:28 编辑
我的意思是要清楚是为什么样机器写代码,

我说的那个“一套关于编译环境、运行环境的合理假设”指的就是这个。编程时一般假设的机器模型都比较宽泛(即使是使用汇编,也需要考虑同一系列不同版本 CPU 的兼容问题),这也是提前考虑一些移植方面的问题,但是这套假设应该合理,不能三不管的所有你不能百分百的确定的东西都考虑进去,这样就是自缚手脚,程序也没办法写了。

当然,这套假设并不是一成不变的,也会根据需要进行调整,随着经验的增加,也会不断的修正。

并且不能假设C语言规定了这些机器的细节
pmerofc 发表于 2011-09-19 10:02



    C 怎么可能规定机器的细节?一般都是编译器跟着机器走的,而不是反过来。

论坛徽章:
0
36 [报告]
发表于 2011-09-19 11:19 |只看该作者
这个好玩儿。

莫斯科国立大学的三进制计算机发来贺电。

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

  1. [iscs@linux-sp1]:/users/iscs>$ cat a.c
  2. #include <stdio.h>

  3. int main(int argc, char* argv[])
  4. {
  5.     char* p=NULL;
  6.     printf("size: %d\n", sizeof(p));

  7.     return 0;
  8. }
  9. [iscs@linux-sp1]:/users/iscs>$ gcc a.c && a.out
  10. size: 8
  11. [iscs@linux-sp1]:/users/iscs>$ gcc -m32 a.c && a.out
  12. size: 4
  13. [iscs@linux-sp1]:/users/iscs>$ uname -a
  14. Linux linux-sp1 2.6.32.12-0.7-default #1 SMP 2010-05-20 11:14:20 +0200 x86_64 x86_64 x86_64 GNU/Linux
复制代码

论坛徽章:
0
38 [报告]
发表于 2011-09-19 14:05 |只看该作者
之前有个装逼的“大牛”,曾很义愤填膺的和我说过,一个指针,是四个字节! 牢牢地刻在了心里头。

论坛徽章:
0
39 [报告]
发表于 2011-09-19 17:22 |只看该作者
占多少字节这个还得由编译器来决定,只是多数编译器通常会根据系统来决定(当然这个主要决定权还是在编译器上)
不过一般情况下32位系统是4字节,64位系统是8字节。反正一句话,不管你编译器决定指针占多大空间,必须至少能存放系统支持的最大内存地址。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
40 [报告]
发表于 2011-09-19 19:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP