c语言变长结构体 |
您所在的位置:网站首页 › c语言定义一个结构 › c语言变长结构体 |
1.什么是变长数组 struct MyData { int nLen; char data[0]; }; sizeof(MyData)=4;可能有的编译器不支持char data[0];需要用char data[1];代替,这样上面结构体大小是sizeof(MyData)=8(字节对齐); 在上结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地址(如果给这个结构体分配的内容大于这个结构体实际大小,后面多余的部分就是这个data的内容),这种声明方法可以巧妙的实现C语言里的数组扩展。 如下下所示: #include using namespace std; struct MyData { int nLen; char data[0]; //如果这里用char* data;代替呢?是一个指针占用空间,而采用变长数组不占内存,数组名只是一个符号 //代表一个不可修改的地址常量 }; int main() { int nLen = 10; char str[10] = "123456789"; cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |