问题描述
- struct sizeof 的问题
-
一:typedef struct S1
{
}S1;
这肯定编译过不了!二:typedef struct S2
{
int b;
int c;
}S2;在main 输出 sizeof(S2) 输出结果是8
三:typedef struct S3
{
int b;
int c;
char * p;
}S3;sizeof(S3) **输出 12 **
四:typedef struct S4
{
int b;
int c;
char s[0];
}S4;
这时候 sizeof(S4)为什么是8? 而不是12;
解决方案
http://blog.csdn.net/maopig/article/details/7243646
data是一个数组名;该数组没有元素;该数组的真实地址紧随结构体Info之后;这种声明方法可以巧妙的实现C语言里的数组扩展。
内存跟踪的结果
其中19行和21行
19:strcpy(pchangeable2->pc, "fgg");
21:pchangeable2[1].pc[1] = 55;
修改的应该是是 pchangeable2的首地址 怎么会是pchangeable2+1的地址? 21同样
比如:char * str = (char *) malloc(sizeof(char) * 20);
*str = 'b';
str[1] = 'c';
修改肯定是下标0 和下标1
时间: 2024-11-03 03:17:10