同类型结构体之间赋值不一定有效

今天为这个问题debug好久...

之前看到一个关于结构体使用的技巧, 这个技巧可以避免内存零碎. 保证结构体所属内存尽量不要零散化.

struct struct_name

{

element_type varible;

...;

element_type  pointer[0];

}

关于该使用方法的介绍.

http://blog.csdn.net/cinmyheart/article/details/28985843

对于普通的结构体,

  struct num{int x;int y;};

这样的类型的结构体就能够通过赋值operator =赋值

可是!

上面介绍的那种特殊使用方法不行.

#include <stdio.h>
#include <stdlib.h>int main()
{struct node{int a;char string[0];};struct num{int x;int y;};struct num m = {1,3};struct num n = {2,4};/***   ATTENTION! m = n;*/m = n;printf("m.x:%d m.y:%d n.x:%d n.y:%d\n",m.x,m.y,n.x,n.y);struct node* p_string_1 = (struct node*)malloc(sizeof(100)+sizeof(int));struct node* p_string_2 = (struct node*)malloc(sizeof(100)+sizeof(int));char hello[] = {"Hello world\n"};char panic[] = {"Don't panic\n"}; int tmp = 0;for(tmp = 0;tmp < sizeof(hello)/sizeof(hello[0]); tmp++){p_string_1->string[tmp] = hello[tmp];}for(tmp = 0;tmp < sizeof(panic)/sizeof(panic[0]); tmp++){p_string_2->string[tmp] = panic[tmp];}printf("1:%s2:%s\n",p_string_1->string,p_string_2->string);/***   ATTENTION! HERE IS AN EVEIL!*/*p_string_1 = *p_string_2;printf("1:%s2:%s\n",p_string_1->string,p_string_2->string);free(p_string_1);free(p_string_2);return 0;
}

猜猜看,打印的结果是什么?

同类型结构体之间赋值不一定有效相关推荐

  1. Matlab 结构体之间相同字段的赋值

    Matlab 结构体之间相同字段的赋值 假设有两个结构体 main_subject 和 all_subject .其中 main_subject 中包含了某位同学的主修成绩和学号姓名信息,需要将这些信 ...

  2. go面向对象编程:结构体struct详解、结构体实例的创建方式、结构体之间的转换(type取别名的使用)、方法的注意事项及与函数的区别

    入门示例 package main import "fmt" //定义老师结构体,将老师中的各个属性 统一放入结构体中管理: type Teacher struct{//变量名字大 ...

  3. C语言中结构体直接赋值

    FROM:http://codewenda.com/c语言结构体直接赋值/ 在C语言中结构体变量之间可以进行赋值操作吗? 简单结构体的赋值 先说结论:一般来说,C语言中的结构体变量可以用另一个变量对其 ...

  4. C语言自定义变量类型——结构体详解

    文章目录 前言 为什么要学习结构体 什么是结构体 一.结构体:struct 1.结构体类型的声明 (1)结构体的基础知识 (2)结构体的声明 (3)特殊的声明 2.结构体的自引用 3.结构体变量的定义 ...

  5. c语言如何将值赋给结构体指针,C语言给结构体指针赋值

    <C语言给结构体指针赋值>由会员分享,可在线阅读,更多相关<C语言给结构体指针赋值(6页珍藏版)>请在人人文库网上搜索. 1.指向结构体的指针 在C语言中几乎可以创建指向任何类 ...

  6. 结构体的赋值和初始化与取出结构体变量中的成员

     1 /*结构体的赋值和初始化*/  2   3 # include <stdio.h>  4   5 struct Student   6 {  7     int age;  8    ...

  7. Qt工作笔记-QByteArray与自定义结构体之间的转化(可用于网络传输,以及数据回调)

    目录 理论 程序 理论 在Socket中,数据一般是char型(一般情况下,其实最好是用uchar来传输,避免莫名其妙的错误,但用char也是可以的),而在Qt里面可以使用QByteArray,这个在 ...

  8. C语言对结构体进行赋值操作

    C语言对结构体进行赋值操作 一.说明 二.环境 三.代码 四.运行 一.说明 定义一个结构体: 并对其进行初始化操作,赋值操作,打印1.注意, struct 定义的位置可以在main函数的外边2.用的 ...

  9. 结构体怎么赋值_c语言学习之基础知识点介绍:结构体的介绍

    一.结构体的介绍 /* 语法:struct 结构体名{成员列表;};切记切记有分号!说明:成员列表就是指你要保存哪些类型的数据.注意:上面的语法只是定义一个新的类型,而这个类型叫做结构体类型.因为类型 ...

最新文章

  1. JNDI学习总结(1)——JNDI入门简介
  2. 第12个双11,天猫的“造新”运动
  3. Qt Creator共享项目设置
  4. 【数据结构与算法】之深入解析“砌墙”的求解思路与算法示例
  5. 如何讲页面打入jar包中_如何把我的Java程序变成exe文件?
  6. 实现textarea限制输入字数
  7. HTML5 小动画例子
  8. Sublime配置java运行环境
  9. 【ViPER音效插件】,完美提升电脑音乐播放效果
  10. 中山一院:华南第一综合性三甲医院的 IT 基础架构转型实践
  11. 新高考教师增值评价方式的再研究
  12. springboot模板项目搭建:代码生成器AutoGenerator
  13. 清洁机器人--屏幕显示LCD方案之MCU GD32F470及其液晶RGB接口的LCD驱动代码
  14. 台式计算机时间跳动,电脑时间总是自动跳
  15. 电脑PPTP更换IP教程
  16. 深入解析Tensor索引中的Indexing Multi-dimensional arrays问题
  17. 功率开关的RC-Snubber电路设计
  18. vim中字母大小写变换
  19. 【uni-app】封装websokcet以及使用方法
  20. 2022年9月青少年软件编程(图形化)等级考试试卷--三级--跳高比赛

热门文章

  1. 探讨ASP.NET 2.0中的Web控件改进技术(3)
  2. 详解zabbix安装部署(Server端篇)
  3. 从“兔子狮子谁做老板”的故事,看企业管理
  4. 实时通信技术之websocket
  5. amazeui学习笔记--css(常用组件4)--关闭按钮Close
  6. VMware vSphere快照之间的互相关系
  7. 查找局域网中的DHCP服务器
  8. [unity3d]水果忍者-界面搭建
  9. 201109080909
  10. iOS Podfile里面的use_frameworks!引发的血案