| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2624 人关注过本帖
标题:C中数组存储空间问题
只看楼主 加入收藏
Tothend
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2011-8-3
结帖率:0
收藏
已结贴  问题点数:10 回复次数:7 
C中数组存储空间问题
程序代码:
# include <stdio.h>

int main(void)
{
    int a[5];

    printf("%d", sizeof(a));

    return 0;
}
vc++6.0输出结果为:20
我想问下:
    1、数组名存放数组首地址这句话到底如何解释?
    2、数组到底如何存储的?从输出结果看,a[5]数组长度为20,那么每个int类型元素4个字节,没有地方给数组存放首地址啊?
感谢围观,期待中?
搜索更多相关主题的帖子: 空间 如何 
2011-08-08 15:55
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:2 
首地址就是第一个元素的地址。sizeof(a)的含义是以第一个元素开始的连续地址空间总大小。

********多贴代码,少说空话*******
2011-08-08 16:00
Tothend
Rank: 1
等 级:新手上路
帖 子:9
专家分:4
注 册:2011-8-3
收藏
得分:0 
回复 2楼 ppfly
能介绍下存放数组的方式么?
2011-08-08 16:02
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
数组是用连续的一段地址空间来存储的,看这个小code
程序代码:
# include <stdio.h>
int main(void)
{
    int a[5];
    printf("sizeof(a) = %d\n", sizeof(a));
    printf("a = %0x\n",a);
    printf("&a[0] = %0x\n&a[1] = %0x\n&a[2] = %0x\n&a[3] = %0x\n&a[4] = %0x\n",&a[0],&a[1],&a[2],&a[3],&a[4]);
    return 0;
}

下面是结果:
图片附件: 游客没有浏览图片的权限,请 登录注册


********多贴代码,少说空话*******
2011-08-08 16:16
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:2 
我觉得你应该好好区分一下 strlen 和 sizeof

                                         
===========深入<----------------->浅出============
2011-08-08 16:31
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:2 
int a[5] = {1, 2, 3, 4, 5};
图片附件: 游客没有浏览图片的权限,请 登录注册


My life is brilliant
2011-08-08 19:36
好孩子好宝贝
Rank: 1
等 级:新手上路
帖 子:35
专家分:2
注 册:2011-7-26
收藏
得分:2 
怎么发帖啊。我是新手
2011-08-08 20:44
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:2 
对于你的问题    1、数组名存放数组首地址这句话到底如何解释?
               
                数组名存放数组首地址.其实主要是说数组名是数组首地址的指针,即它可以当作指针来使用,指向数组的首地址。



    2、数组到底如何存储的?从输出结果看,a[5]数组长度为20,那么每个int类型元素4个字节,没有地方给数组存放首地址啊?

    向楼上那位美女说的:数组是用连续的一段地址空间来存储的。数组名是用户自定义表示符。a[5]数组长度为20,那么每个int类型元素4个字节,正确,数组的首地址,就是数组中第一个元素的地址,即a[0]的地址。也就是说首地址包含在了20里边了。

[ 本帖最后由 韩54521风 于 2011-8-9 14:51 编辑 ]
2011-08-09 14:50
快速回复:C中数组存储空间问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023648 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved