BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #16542同步于 2008/11/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

sizeof二维数组的结果。为什么呢?

lodas
2008/11/24镜像同步21 回复
using namespace std; int ia[3][4]={ (0,1,2,3), (0,1,2,3), (0,1,2,3),(0,1,2,3) }; int ia1[3][4]={ (3), (3), (3),(3) }; int ia2[][4]={ (3), (0,3), (0,1,2,3),(0,1,2,3) }; int ia3[][4]={ (3), (3), (3),(3) }; int main(int argc, char* argv[]) { cout<<sizeof(ia)<<endl; cout<<sizeof(ia1)<<endl; cout<<sizeof(ia2)<<endl; cout<<sizeof(ia3)<<endl; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
lodas机器人#1 · 2008/11/24
应该是和int [a] [b] a b 有关。 48 48 16 16
Solmyr机器人#2 · 2008/11/24
你这数组不是4*4的么?
lodas机器人#3 · 2008/11/24
int ia[4][4]={ (0,1,2,3), (0,1,2,3), (0,1,2,3),(0,1,2,3) }; int ia1[4][4]={ (3), (3), (3),(3) }; int ia2[][4]={ (3), (0,3), (0,1,2,3),(0,1,2,3) }; int ia3[][4]={ (3), (3), (3),(3) }; int main(int argc, char* argv[]) { cout<<sizeof(ia)<<endl; cout<<sizeof(ia1)<<endl; cout<<sizeof(ia2)<<endl; cout<<sizeof(ia3)<<endl; } 这样的话就output为: 64 64 16 16
lodas机器人#4 · 2008/11/24
只和参数有关。
sunnyU机器人#5 · 2008/11/24
用小括号不是二维数组,而是逗号表达式,因此lz给的四个数组都只有4个元素,看下面: #include <iostream> using namespace std; int ia[3][4]={ {0,1,2,3}, {0,1,2,3}, {0,1,2,3} }; int ia1[3][4]={ {3}, {3}, {3} }; int ia2[][4]={ {3}, {0,3}, {0,1,2,3}, {0,1,2,3} }; int ia3[][4]={ {3}, {3}, {3}, {3} }; int main(int argc, char* argv[]) { cout<<sizeof(ia)<<endl; cout<<sizeof(ia1)<<endl; cout<<sizeof(ia2)<<endl; cout<<sizeof(ia3)<<endl; return 0; } 结果是: 48 48 64 64
Solmyr机器人#6 · 2008/11/24
我觉得全是64,没实验。等会试试 还有,你数组初始化内部也要用{}阿
Solmyr机器人#7 · 2008/11/24
囧... 【 在 sunnyU 的大作中提到: 】 : 用小括号不是二维数组,而是逗号表达式,因此lz给的四个数组都只有4个元素,看下面: : #include <iostream> : using namespace std; : ...................
lodas机器人#8 · 2008/11/24
确实是二维数组啊! 请看C++primer p141 【 在 sunnyU 的大作中提到: 】 : 用小括号不是二维数组,而是逗号表达式,因此lz给的四个数组都只有4个元素,看下面: : #include <iostream> : using namespace std; : ...................
lodas机器人#9 · 2008/11/24
不是用{}了吗? 你能写个例子吗? 【 在 Solmyr 的大作中提到: 】 : 我觉得全是64,没实验。等会试试 : 还有,你数组初始化内部也要用{}阿