首页 > 试题广场 >

请问在 64 位平台机器下 sizeof(string_a)

[单选题]
请问在 64 位平台机器下 sizeof(string_a),sizeof(string_b) 大小分别是()
char *string_a = (char *)malloc(100*sizeof(char));
char string_b[100]; 
  • 8 100
  • 100 8
  • 100 100
  • 8 8
推荐
string_a是一个char型的指针,在64位系统中sizeof(char*)=8
string_b是一个char型的数组,在64位系统中sizeof(char)=1,共100值因此为100
编辑于 2016-10-21 11:14:36 回复(0)
数组名不等价于指针,只有数组名作为函数参数时,才退化为指针,此时数组名的sizeof()就是指针大小,除了这种情况外,均是整个指整个数组的大小
发表于 2016-01-08 15:00:57 回复(4)
     64位系统中,指针占8个字节,32位系统中,指针占4个字节。
发表于 2017-05-09 19:44:22 回复(0)
选A,string_a是一个指向用malloc申请的大小为100*sizeof(char)的空间,在64位的系统中,指针占8字节;string_b是一个字符数组,大小为100*sizeof(char),占100字节。

发表于 2015-03-03 20:35:22 回复(0)
不管指针是什么类型,在32位编译器下都是4字节,在64位下是8字节。区分开整形变量,在32和64下都是4字节,除非自己定义字节数。还有一点指针和它所指向的内容是分开存储的。可能不在一个位置。
发表于 2016-06-01 14:33:44 回复(1)


32位测试结果。
发表于 2015-08-28 15:33:14 回复(0)
string_a是一个char型的指针,在64位系统中sizeof(char*)=8 string_b是一个char型的数组,在64位系统中sizeof(char)=1,共100值因此为100
发表于 2022-01-17 16:14:56 回复(1)
sizeof()是运算符不是函数!
发表于 2015-09-06 15:49:31 回复(2)
指针不随指向内存的大小改变
发表于 2018-04-22 16:31:50 回复(0)
前者是指字符串的存储地址,后者是为字符串分配内存
发表于 2018-04-08 20:26:38 回复(0)
sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象、结构、数组所存储的内容没有关系;
具体而言,当参数分别如下时,sizeof返回的值表示的含义如下:
数组——编译时分配的数组空间大小;---》用来求预分配的大小
指针——存储该指针所用的空间大小(存储该指针的地址的长度,是长整型,应该为4);
类型——该类型所占的空间大小;
对象——对象的实际占用空间大小;
函数——函数的返回类型所占的空间大小。函数的返回类型不能是void
发表于 2018-10-08 10:49:19 回复(0)
指针在操作系统中占固定长度,64位系统中,指针占8个字节,32位系统中,指针占4个字节。
发表于 2018-03-05 20:02:16 回复(0)
一个问的是指针所占空间的大小,就是string_a的大小,这里64位所以是8,它只不过指向了一段100字节的空间而已,而另外一个问的是数组的大小,根据定义,那就是100byte
发表于 2015-11-29 11:33:15 回复(0)
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
    char *string_a=(char *)malloc(100*sizeof(char));
    char string_b[100];
    printf("%d,%d",sizeof(string_a),sizeof(string_b));
    return 0;
64位测试结果为8,100


发表于 2019-05-17 09:09:21 回复(0)
string_a是一个char*指针,在64位系统下指针本身都是占8个字节
string_b是一个char型数组,数组大小为100,每个char型元素占1个字节,总共占100字节
发表于 2016-10-25 11:12:40 回复(0)
sizeof(string_a)表示指针 string_a的地址占多少个字节,因此在64位操作系统环境下, sizeof(string_a)=8;
sizeof(string_b)表示 string_b数组占用的字节总数,因此, sizeof(string_b)=100。
综上所述,本题选择A选项。
发表于 2016-10-25 10:54:47 回复(0)
string_b数组定义的是字符型长度为100
string_a数组定义的是指针数组分配了一段内存
感觉还是有点乱  坐等高手解答下
发表于 2015-03-02 11:52:35 回复(0)
对于64位操作系统来说,指针占8个字节,第一个计算的是指针的存储空间大小,字符char占一个字节,有100个字符元素,也就是分配的存储空间大小为100
发表于 2023-07-16 11:54:42 回复(0)
第一行等号右边先是开辟了一段空间,但是又将强制转换为了一个指向这段空间起始地址的指针,而且是个临时变量,然后将这个临时变量赋值给左边的string_a指针,相当于string_a指向的是一个空间的起始地址而不是整个空间,64位里占8个字节,所以是8 第二个string_b不加括号就代表指向整个数组的指针,长度为数组长度
发表于 2022-06-13 10:10:08 回复(0)
a是指针,sizeof(a)是指针的大小64位就是8字节,32位就是4字节。
发表于 2016-03-03 23:04:45 回复(0)
在32位下,无论是char*,Int*等等只要是指针,都是4bype。64位的应该是8bype。在64位下,一个char还是1bype吗?这个不解?
发表于 2015-10-20 22:33:34 回复(1)