免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19598 | 回复: 53
打印 上一主题 下一主题

[C] c语言的尴尬:取常量地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-08-25 00:34 |只看该作者 |倒序浏览
问题:
怎样取得基本类型的常量的地址?

不知道算不算c语言本身的设计问题,反正我找遍了所有能想到的资料,找不到答案。答案也许有,也许没有。大家一起来证实这个问题!

还有一个小问题(与上一个问题无关):
<code>;
char sz[10];
</code>;

请问sz和&sz分别表示什么?之间的关系?

谢谢!

论坛徽章:
0
2 [报告]
发表于 2004-08-25 00:44 |只看该作者

c语言的尴尬:取常量地址

偶的理解是,常量在编译过程中就被替换完成了。生成的代码中是不存放常量的吧。当然执行中也看不见常量的地址。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2004-08-25 00:47 |只看该作者

c语言的尴尬:取常量地址

sz是数组的首地址,是一个常量.
我认为&sz是一个地址,在编译器内部应该是int *const类型,因为指针虽然是指向一个地址,但它自己也要占一个空间吧?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-08-25 09:35 |只看该作者

c语言的尴尬:取常量地址

很简单啊。直接用&取地址就好了啊。


  1. #include <stdio.h>;
  2. #include <stdlib.h>;

  3. int main(void) {
  4.         int     i,
  5.                 *p = NULL;

  6.         i = 5;

  7.         p = &

  8.         printf("%p,%d\n",p,*p);

  9.         exit(0);
  10. }
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-08-25 09:37 |只看该作者

c语言的尴尬:取常量地址

原帖由 "THEBEST" 发表:
sz是数组的首地址,是一个常量.
我认为&sz是一个地址,在编译器内部应该是int *const类型,因为指针虽然是指向一个地址,但它自己也要占一个空间吧?


数组名是数组的首地址,但和指针不一样,他不占空间。&sz也是一个数值,不占空间。

论坛徽章:
0
6 [报告]
发表于 2004-08-25 12:28 |只看该作者

c语言的尴尬:取常量地址


  1. const int i=0;
  2. printf("0x%x\n",&i);
复制代码

论坛徽章:
0
7 [报告]
发表于 2004-08-25 20:41 |只看该作者

c语言的尴尬:取常量地址

原帖由 "dadaball" 发表:
t;/code>;

请问sz和&sz分别表示什么?之间的关系?

谢谢!


你就不通过大脑想想,经过几代程序人千锤百炼的C就这么容易被你个毛头小子找出毛病来了?拜托有问题先从自己找起,实在找不着了再去请教别人,如果你能把全世界所有的高手都请教完了,最后证实确实是C的问题,再来发表这样的贴子好不好

论坛徽章:
0
8 [报告]
发表于 2004-08-26 07:51 |只看该作者

c语言的尴尬:取常量地址

原帖由 "bierdaci" 发表:


你就不通过大脑想想,经过几代程序人千锤百炼的C就这么容易被你个毛头小子找出毛病来了?拜托有问题先从自己找起,实在找不着了再去请教别人,如果你能把全世界所有的高手都请教完了,最后证实确实是C的问题,再?.........

原帖由 "dadaball" 发表:


还有一个小问题(与上一个问题无关):
<code>;
char sz[10];
</code>;

请问sz和&sz分别表示什么?之间的关系?



呵呵,老兄,你是完全误解我了,不知你是否认真看完我的贴子?再说,我想大家发贴子的更多目的是为了寻求解决办法,而非寻事挑衅,更不想就c语言外的话题过多讨论,特别是无聊的口水战!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2004-08-26 08:49 |只看该作者

c语言的尴尬:取常量地址

数值不占空间,常量占空间,变量占空间。地址是数值,指针是变量。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-08-26 14:16 |只看该作者

c语言的尴尬:取常量地址

某些情况下常量不就是数值?
如const int i=4;
4是数值常量.它也是数值,你说的常量应该是指i这样的常量需要占空间吧?但有些优化也不需要吧.当然说这些感觉没有意义.

数组名是数组的首地址,但和指针不一样,他不占空间。&sz也是一个数值,不占空间。

数组名是一个地址,也就是一个数值,但取& sz这样的一个数组名(一个数值)的地址是什么意思啊?居然编译器也没报错..
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP