首页 > 试题广场 >

64位系统上,定义的变量int*a[2][3]占据多少字节?

[单选题]
64位系统上,定义的变量int*a[2][3]占据多少字节?
  • 4
  • 12
  • 24
  • 48
推荐
一个指针数组,数组里面存放的是指针,a[2][3]可以看成一维数组为a[0],a[1],在每个一维数组里面又存放了3个指针,64系统下指针8位,6*8=48

编辑于 2015-08-20 16:42:00 回复(1)
1)对数组而言,其所占的字节=数组中元素个数*元素类型所占的字节;
    如在64位系统下:int a[7], sizeof(a)=7*4=56;
2)在64位系统下,地址站8个字节;在32位系统下,地址站4个字节;其他基本数据类型所占字节,仍然不变,如 int 占4个字节,double占8个字节,除非特别说明,如int_64-占8字节
    int*p;   在64位系统下sizeof(p)=8;在32位系统下sizeof(p)=4;
3)指针数组,是指每个数组元素是指针,int*p[];
4)综上所述,指针数组所占的字节数=指针元素的个数*地址所占字节数;
如在64位系统下 int*a[2][3]==》sizeof(a)=2*3*8=48


编辑于 2015-08-24 17:16:58 回复(2)
这是一个指针数组,数组内每一个元素都是一个指针。二维数组[2][3]有6个元素,就是有个6个指针。指针在64位系统中占8个字节,6个便是48字节。
int *p[2] = {&a,&b};这种形式的是指针数组。
int (*p)[2] = {1,2};这种形式的是数组指针,表示一个数组整体的指针。
发表于 2020-04-06 23:27:38 回复(0)
int*a[2][3] a的类型是int[][],实际存储的是a[0]的地址,占8字节,同时创建出两个int[]数组
两个int[]数组实际存储的分别是a[0][0]和a[1][0]的地址,一共占16字节,同时创建出6个int
int存储的就是实际值,每个int占8字节,6个int占48字节
所以最终占用了72字节。这么看来,难道是题目出错了?
注意,这里的定义是int*,也就是说,只是定义了数组,并没有对该数组赋值。也就是说,int[]数组里面存储的地址是并没有初始化,且int没有被创建。这么看来,实际占据字节就是24字节了。所以应该选C
编辑于 2015-08-24 11:13:44 回复(1)
指针数组,比如 int *a[2] 就是定义了两个int  型指针,占用 2*机器位数/8字节,题中是二维指针数组就是2*3*机器位数/8字节 = 48
发表于 2015-08-25 18:37:50 回复(0)
d
发表于 2015-08-24 23:14:03 回复(0)
这里只要知道指针的作用就可以,指针只是代表(存储)内存地址。 那么可以得出 无论int 型指针 chai型指针,double型指针都是64位即8个字节,所以这里有6个指针那么就是48个字节。
可以定义不同类型的指针,printf(sizeof(p)); 这还不懂就没办法了,个人体会。
发表于 2015-08-24 22:52:49 回复(0)
这就是6个指针,每个指针是8,则是48
这应该是C/C++语言吧
发表于 2015-08-24 20:26:30 回复(0)
在64位系统上,int *变量 占64位,而int 变量占32位。
int* a[2][3]的含义是a为二维2*3数组,共6个元素,元素的类型为int*;
所以共占用的内存为6*8=48;
选D
发表于 2015-08-24 20:23:51 回复(0)
D 这是一个指针数组,64位系统一个指针占8位,3*2的二维数组6个元素,所以共占6*8 = 48位
发表于 2015-08-24 13:54:14 回复(0)
D64位系统指针位8个字节,该数组为指针数组,总共6个单元,6*8=48
发表于 2015-08-24 12:59:39 回复(0)
D 64位下一个指针为8个字节,所以答案=2×3×8=48
发表于 2015-08-24 11:03:26 回复(0)
int*a[2][3]定义了一个二维的指针数组,每个元素是一个指向int型的指针,总共有2*3=6个指针;而在64位系统上,每个指针占8个字节,所以共计占用空间:6*8=48字节。
发表于 2015-08-24 10:57:49 回复(0)
d 数组内存储2*3=6个指针类型8个字节共48
发表于 2015-08-24 09:30:31 回复(0)
D
发表于 2015-01-02 06:29:20 回复(0)