| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1028 人关注过本帖
标题:关于二维数组的内存大小问题?
只看楼主 加入收藏
johnzsj
Rank: 2
等 级:论坛游民
帖 子:54
专家分:27
注 册:2017-2-10
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:3 
关于二维数组的内存大小问题?
在二维数组中为什么sizeof(数组名)代表整个数组大小;sizeof(a+0)为什么它的输出结果是4,他不是表示0行的首地址吗!;为什么sizeof(a[0])的输出结果是12,他不是表示二维数组中的0行第0列元素的地址吗?

程序:
#include<stdio.h>

int main()
{
    int a[2][3]={{1,2,3},{4,5,6}};
   
    printf("%d",sizeof(a));
   
    printf("%d",sizeof(a+0));
   
    printf("%d",sizeof(a[0]));
   
    return 0;
}

搜索更多相关主题的帖子: return 元素 
2017-02-24 09:06
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:5 
二维数组是数组的数组。
也就是说,它的元素就是一个数组。

a[2][3];

a[0]是二维数组的第一个元素的首地址,首先你要弄清楚这个元素,这个元素是一个数组。。

如果数组的类型是int,那么就是12个字节,在大部分系统上。

[此贴子已经被作者于2017-2-24 09:23编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-02-24 09:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:10 
    printf("%d\n",sizeof(a)); // a的类型是 int[2][3],相当于 sizeof( int [2][3] ),也就是6个sizeof(int)长

    printf("%d\n",sizeof(a+0)); // a+0的类型是 int (*)[3],相当于 sizeof( int(*)[3] ),也就是一个指针长

    printf("%d\n",sizeof(a[0])); // a[0]的类型是 int[3],相当于 sizeof( int[3] ),也就是3个sizeof(int)长
2017-02-24 09:28
yanzy
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:104
专家分:372
注 册:2017-2-7
收藏
得分:5 
为什么sizeof(数组名)代表整个数组大小;
---
这是C语言规定的

printf("%d\n", sizeof(a + 0));这个没看懂
0行首地址是这样printf("%d\n", sizeof(a + 0));

sizeof(a[0])的输出结果是12
这个是意思是二维数组第一行的总大小

2017-02-24 09:36
快速回复:关于二维数组的内存大小问题?
数据加载中...
 
   



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

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