首页 > 试题广场 >

下面代码在64位Linux系统编译执行,输出结果是____。

[单选题]
下面代码在64位Linux系统编译执行,输出结果是____。
#include <stdint.h>
#include <stdio.h>

void print_size(int32_t array[10]) { printf("%d\n", sizeof(array)); }

int main() {
    int32_t myArray[10];
    printf("%d ", sizeof(myArray));
    print_size(myArray);
}
  • 20 4
  • 40 4
  • 80 4
  • 40 8
  • 80 8
  • 以上均不正确
本题要注意几点:
1、sizeof(数组名),返回的整个数组占据的字节数。在这里,数组长度为10,每个4字节,所以,总共40字节。
2、在64位操作系统中,地址为64位,也就是指针64位,占8字节。
2、通过函数调用后,数组名退化成指针,占8字节。
发表于 2015-08-17 15:18:13 回复(3)
voidprint_size(int32_t array[10])中,传递给函数的是指针,即数组的首地址,在64位系统中,指针占8个字节;而在主函数中,
数组在定义的时候已经分配了内存空间,该数组有10个元素,每个元素的数据类型为32位整形,每个元素占4个字节,因此,总共40个字节。

发表于 2015-08-02 20:54:01 回复(0)
D  64位Linux系统指针占8个字节;
   int32_t 仍然占用32位,4个字节;
发表于 2015-05-04 19:09:46 回复(4)
数组作为形参的话会被优化为指针无论是什么数组都是,作为形参就会被优化为指针
发表于 2023-08-22 20:51:21 回复(0)
关键就在于数组名在函数调用中退化为指针
发表于 2015-08-21 16:40:32 回复(0)
已分配空间的数组,sizeof(数组名)返回的是整个数组占据的字节数,int32_t占用4个字节,因此为40
通过函数调用后,数组名退化为指针,因此print_size(...)中的sizeof()实际求的是int32_t型指针所占空间,64位系统,即为8个字节
因此,选C
发表于 2016-09-04 15:15:13 回复(0)
不管什么类型的指针,在64位下都是8字节,在32位下都是四字节
发表于 2024-05-09 19:05:54 回复(0)
这一题的答案,会因为电脑的差异形成多个答案
发表于 2022-10-18 19:38:50 回复(0)
本题核心:数组通过函数调用,会变成指针
发表于 2022-06-14 21:11:26 回复(1)
64位Linux系统
发表于 2022-03-14 09:34:11 回复(0)
本题要注意几点: 1、sizeof(数组名),返回的整个数组占据的字节数。在这里,数组长度为10,每个4字节,所以,总共40字节。 2、在64位操作系统中,地址为64位,也就是指针64位,占8字节。 2、通过函数调用后,数组名退化成指针,占8字节。
发表于 2021-11-22 10:51:13 回复(0)
1、sizeof(数组名),返回的整个数组占据的字节数。在这里,数组长度为10,每个4字节,所以,总共40字节。 2、在64位操作系统中,地址为64位,也就是指针64位,占8字节。 3、通过函数调用后,数组名退化成指针,占8字节。
发表于 2021-01-31 10:10:32 回复(0)
64位的系统, 指针都是64bits, 64位Linux 使用了 LP64 标准, 即long 和指针类型都是64位; 其他类型和32位下的相同;
发表于 2016-09-09 15:58:55 回复(0)
我的系统是64位的,指针的占4个字节(VC++6.0)
编辑于 2015-08-12 20:38:15 回复(2)