#include
by luojb001 - C/C++ - 2008-10-30 19:26:12 阅读(2410) 回复(10)
[CODE] inline convert(char *buf) { printf("%d\n", sizeof(buf)); //为什么是(char*的大小)4而不是2048,如何得到2048的大小 } int main(void) { char buf[2048] = {'\0'}; printf("%d\n", sizeof(buf)); convert(buf); exit(0); } [/CODE]
[code]#include
直接上DEMO程序: main() { char s[5]; memset(s, 'A', sizeof(s)); s[5] = '\0'; printf("s=%s\n", s); // 输出: s=AAAAA printf("sizeof(s)=%d\n", sizeof(s)); // 输出: sizeof(s)=5 } 我的问题如下: 1. char s[5], 表示字符数组s可以存储5个字符还是6个字符 ? 最后一个字符应该存储的是'\0' 2. 输出s=AAAAA没有疑问, 但是sizeof(s)为什么输出5 ? sizeof(s)计算的是s的存储空间大小,最后...
看到前面有人代码里对函数进行sizeof操作,有点疑惑,所以自己写了段测试代码,如下
[code]
#include
[code]#include
int main(void) { void sub(char sbuffer[]); char buffer[10]={0x34,0x54,0x56,0x56,0x56,0x56}; printf("buffer size in main %d \n",sizeof(buffer)); sub(buffer); } void sub(char sbuffer[]) { printf("sbuffer size in sub %d \n",sizeof(sbuffer)); } 输出结果: buffer size in main 10 sbuffer size in sub 4 buffer 和 sbuffer 内容是一样的呀,为什么用sizeof取出的长度不一样? 我是菜鸟,请大家指导.
[color="#002200"]缺省的对齐方式。 在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间;各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个结构的地址相同。在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间。 例如,下面的结构各成员空间分配情况。 struct test { char x1; short x2; float x3; char x4; }; 结构的第一个成员x1,...
#include
给定结构struct A { char t:4; char k:4; unsigned short i:8; unsigned long m; };问sizeof(A) = ?