标签: sizeof

为什么C++中空类的大小不为零?

可能重复:
C++:空类对象的大小是多少?

为什么以下输出1

#include <iostream>

class Test
{
};

int main()
{
    std::cout << sizeof(Test);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ sizeof

74
推荐指数
4
解决办法
5万
查看次数

虚空的大小是多少?

这个陈述会产生什么?

void *p = malloc(sizeof(void));
Run Code Online (Sandbox Code Playgroud)

编辑:问题的扩展.

如果sizeof(void)在GCC编译器中产生1,那么分配1个字节的内存并且指针p指向该字节并且p ++将递增到0x2346?假设p是0x2345.我说的是p而不是*p.

c c++ sizeof language-lawyer

73
推荐指数
6
解决办法
6万
查看次数

当函数具有特定大小的数组参数时,为什么它被指针替换?

鉴于以下计划,

#include <iostream>

using namespace std;

void foo( char a[100] )
{
    cout << "foo() " << sizeof( a ) << endl;
}

int main()
{
    char bar[100] = { 0 };
    cout << "main() " << sizeof( bar ) << endl;
    foo( bar );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

main() 100
foo() 4
Run Code Online (Sandbox Code Playgroud)
  1. 为什么数组作为指向第一个元素的指针传递?
  2. 它是C的遗产吗?
  3. 标准说什么?
  4. 为什么C++的严格类型安全性下降了?

c++ arrays standards sizeof function-parameter

65
推荐指数
2
解决办法
3万
查看次数

在64位计算机上应该是sizeof(int)应该是什么?

可能重复:
int,long等
的大小int的大小是否取决于编译器和/或处理器?
什么决定整数的大小?

我正在使用一64-bit台机器.

$ uname -m
x86_64
$ file /usr/bin/file
/usr/bin/file: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, stripped
$ 
Run Code Online (Sandbox Code Playgroud)

当我运行以下程序时,我得到了sizeof(int)as 4-bytes.

#include <stdio.h>

int main(void)
{
    printf("sizeof(int) = %d bytes\n", (int) sizeof(int));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我运行一个16-,32-64-位机,那么不就意味着一个大小integer16-,32-64-分别位?

在我的机器上,我找到了WORD_BITIS 32.它不应该6464-bit机器上吗?

$ getconf WORD_BIT
32 …
Run Code Online (Sandbox Code Playgroud)

c c++ sizeof

65
推荐指数
4
解决办法
15万
查看次数

在C中,sizeof运算符在传递2.5m时返回8个字节,在传递1.25m*2时返回4个字节

我不明白为什么sizeof运营商产生以下结果:

sizeof( 2500000000 ) // => 8 (8 bytes).
Run Code Online (Sandbox Code Playgroud)

...它返回8,当我执行以下操作时:

sizeof( 1250000000 * 2 ) // => 4 (4 bytes).
Run Code Online (Sandbox Code Playgroud)

...它返回4而不是8(这是我的预期).有人可以澄清如何sizeof确定表达式(或数据类型)的大小以及为什么在我的特定情况下会发生这种情况?

我最好的猜测是sizeof运算符是编译时运算符.

赏金问题:是否有运行时运算符可以评估这些表达式并产生我的预期输出(没有强制转换)?

c sizeof

65
推荐指数
3
解决办法
3597
查看次数

C++中枚举类型数据的大小是多少?

这是一个C++面试测试题而不是作业.

#include <iostream>
using namespace std;
enum months_t { january, february, march, april, may, june, july, august, september,    
  october, november, december} y2k;

 int main ()
  {
    cout << "sizeof months_t is  " << sizeof(months_t) << endl;
    cout << "sizeof y2k is  " << sizeof(y2k) << endl;
    enum months_t1 { january, february, march, april, may, june, july, august,    
       september, october, november, december} y2k1;
    cout << "sizeof months_t1 is  " << sizeof(months_t1) << endl;
    cout << "sizeof y2k1 is  " << sizeof(y2k1) …
Run Code Online (Sandbox Code Playgroud)

c++ enums sizeof

62
推荐指数
6
解决办法
10万
查看次数

是否有任何平台指向不同类型的指针有不同的大小?

C标准允许指向不同类型的指针具有不同的大小,例如sizeof(char*) != sizeof(int*)是允许的.但是,它确实要求如果指针转换为a void*然后转换回其原始类型,则必须将其与原始值进行比较.因此,从逻辑上讲,sizeof(void*) >= sizeof(T*)对于所有类型T,正确吗?

在当今使用的大多数常见平台上(x86,PPC,ARM和64位变体等),所有指针的大小都等于本机寄存器大小(4或8字节),而不管指向的类型.是否存在任何深奥或嵌入式平台,其中指向不同类型的指针可能具有不同的大小?我特别询问数据指针,虽然我也有兴趣知道是否存在函数指针具有异常大小的平台.

我绝对不会问C++的指向成员的指针和指向成员的指针函数.这些在常见平台上具有不寻常的大小,甚至可以在一个平台内变化,具体取决于指针类的属性(非多态,单继承,多继承,虚继承或不完整类型).

c pointers sizeof

57
推荐指数
7
解决办法
4909
查看次数

指针的大小是多少?

指针的大小是否与其指向的类型的大小相同,或者指针总是具有固定大小?例如...

int x = 10;
int * xPtr = &x;
char y = 'a';
char * yPtr = &y;

std::cout << sizeof(x) << "\n";
std::cout << sizeof(xPtr) << "\n";
std::cout << sizeof(y) << "\n";
std::cout << sizeof(yPtr) << "\n";
Run Code Online (Sandbox Code Playgroud)

这会是什么输出?会sizeof(xPtr)返回4并sizeof(yPtr)返回1,或者2指针实际上会返回相同的大小吗?我问这个的原因是因为指针存储的是存储器地址而不是它们各自存储的地址的值.

c++ pointers sizeof

56
推荐指数
5
解决办法
12万
查看次数

从-1开始的循环不会打印任何内容

该程序应该打印出来的元素array,但是当它运行时,没有显示输出.

#include <stdio.h>

#define TOTAL_ELEMENTS  (sizeof(array) / sizeof(array[0]))

int array[] = { 23, 34, 12, 17, 204, 99, 16 };

int main() {
    int d;
    for (d = -1; d <= (TOTAL_ELEMENTS - 2); d++) 
        printf("%d\n", array[d + 1]);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么这个程序没有显示任何输出?

c integer loops sizeof negative-number

55
推荐指数
3
解决办法
7233
查看次数

C++中的sizeof是在编译时还是运行时评估的?

例如,此代码段的结果取决于哪台机器:编译器机器或机器可执行文件有效?

sizeof(short int)
Run Code Online (Sandbox Code Playgroud)

c++ runtime sizeof compile-time

54
推荐指数
4
解决办法
2万
查看次数