Tag: sizeof

为什么字符串的字节大小比长度长?

为什么sizeof(“Bill”)是5但sizeof(char)是1 ? 不应该使sizeof(“Bill”)为4因为字符串的长度是4个字符( 4 x 1 )? 我相信它可能与”Bill”是一个字符数组有关,但为什么会增加字节大小?

C:如何确定外部数组的sizeof(array)/ sizeof(struct)?

定义类型x和该类型的数组X XH: typedef struct _x {int p, q, r;} x; extern x X[]; 单独的文件保持巨大的鸣喇叭数组X XC: #include “xh” x X[] = {/* lotsa stuff */}; 现在我想使用X : main.c中: #include “xh” int main() { int i; for (i = 0; i < sizeof(X)/sizeof(x); i++) /* error here */ invert(X[i]); return 0; } main.c不会编译; 错误是: error: invalid application […]

sizeof-function还是宏?

在c中,我们使用sizeof()来获取数据类型的大小。 那么它是如何定义的。 它是一个宏或一个函数。 因为我们可以用两种方式, sizeof int 和 sizeof(int) 这是如何在头文件中定义的。

sizeof运算符在C中有什么参数?

[ 原标题称为’sizeof function’。 ] 我尝试了这些,他们都工作: char * p; printf(“* p的大小是%d \ n”,sizeof(* p)); // result = 1 printf(“p的大小是%d \ n”,sizeof(p)); //结果= 4 printf(“p的大小是%d \ n”,sizeof(&p)); //结果= 4 我想知道为什么第一个printf是1,第二个和第三个是4? 那么sizeof可以实际采用什么参数呢?

sizeof指针在同一架构上的数据类型不同

我一直在阅读一些post,并注意到指针根据sizeof可以是不同的大小,具体取决于代码编译和运行的体系结构。 对我来说似乎足够合理(即:32位架构上的4字节指针,64位上的8字节,完全有意义)。 让我感到惊讶的一件事是,指针的大小可以根据它指向的数据类型而有所不同。 我原以为,在32位架构上,所有指针的大小都是4个字节,但事实certificate,函数指针的大小可能不同(即:大于我预期的大小)。 为什么这是C编程语言? 我找到了一篇文章解释了这个C ++,以及程序如何处理虚函数 ,但这似乎不适用于纯C.此外,似乎使用“远”和“近”指针是不再需要,所以我没有看到那些进入等式的人。 那么,在C中,什么理由,标准或文档描述了为什么不是所有指针在同一架构上都是相同的大小? 谢谢!

ARM cortex-M3 uint_fast32_t vs uint32_t

我正在为STM32Fx cortex-M3系列处理器开发一个程序。 在stdint.h中定义了以下内容: typedef unsigned int uint_fast32_t; typedef uint32_t uint_least32_t; typedef unsigned long uint32_t; 据我了解。 [u]int_fast[n]_t will give you the fastest data type of at least n bits. [u]int_least[n]_t will give you the smallest data type of at least n bits. [u]int[n]_t will give you the data type of exactly n bits. 据我所知sizeof(unsigned int)<= sizeof(unsigned […]

C中的运算符sizeof()

考虑该计划 main() { printf(“%d %d %d”,sizeof(‘3’),sizeof(“3”),sizeof(3)); } gcc编译器的输出是: 4 2 4 为什么会这样?

sizeof结构成员

如何在C中获取结构中成员的大小? struct A { char arr[64]; }; 我需要这样的东西: 的sizeof(A :: ARR) 谢谢

将原始结构内容(字节)写入C中的文件。对写入的实际大小感到困惑

基本问题,但我希望这个结构占用13个字节的空间(1个用于char,12个用于3个无符号的int)。 相反, sizeof(ESPR_REL_HEADER)给了我16个字节。 typedef struct { unsigned char version; unsigned int root_node_num; unsigned int node_size; unsigned int node_count; } ESPR_REL_HEADER; 我想要做的是用一些值初始化这个结构并将它包含的数据(原始字节)写入文件的开头,这样当我打开这个文件后我才能重构这个结构并获得一些元数据有关文件其余部分包含内容的数据。 我正在初始化结构并将其写入文件,如下所示: int esprime_write_btree_header(FILE * fp, unsigned int node_size) { ESPR_REL_HEADER header = { .version = 1, .root_node_num = 0, .node_size = node_size, .node_count = 1 }; return fwrite(&header, sizeof(ESPR_REL_HEADER), 1, fp); } 我试验时node_size当前是4。 在向其编写结构后,该文件包含以下数据: […]

sizeof(’a’)和sizeof(“a”)之间的差异

我的问题是关于C中的sizeof运算符。 sizeof(‘a’); 等于4 ,因为它将’a’作为整数:97。 sizeof(“a”); 等于2 :为什么? 另外(int)(“a”)将给出一些垃圾值。 为什么?