1.用typedef声明一个短语代替冗长的struct成员声明

int main(void)
{ typedef struct Hores Hores;
struct Hores
{
int age;
int height;
char name[];
char father[];
char mother[];
}; Hores groups[];
}

2.成员之间的复制是按值传递的,并不是按引用传递

#include <stdio.h>
#include <string.h>
#include <stdarg.h> int main(void)
{ typedef struct Hores Hores;
struct Hores
{
int age;
int height;
char name[];
char father[];
char mother[];
}; Hores groups[]; strcpy(groups[].name, "charleed"); groups[] = groups[]; printf("%d\n", sizeof(groups)); printf("%s\n", groups[].name);
printf("%s\n", groups[].name);
strcpy(groups[].name, "alex");
printf("%s\n", groups[].name);
printf("%s\n", groups[].name); return ;
}

输出:

204

charleed

charleed

charleed

alex

3.访问结构成员有两种运算符:

一个是“点运算符”,点运算符的左操作数一般是一个左值(也可以不是左值,但值必须是一个结构类型,参考左值一文的示例.5,或《C语言核心技术》第5章:结构和联合的成员);

另一个是“箭头运算符”,箭头运算符的左操作数必须是一个指针;

4.结构指针访问成员属性语法

printf("The name is %s\n", (*phorse).name);

为什么不是

printf("The name is %s\n", (*phorse.name));

因为成员选择运算符(句点)的优先级高于取消引用指针运算符*。这个操作还有另一种方法,更容易理解。将上面的语句改写为:

printf("The name is %s\n", phorse->name);

5.结构成员必须都是完整类型,例如下面这个例子,如果成员是一个数组,而它不指定长度,就无法通过编译:

struct frame_1 {
char name[];
};

不过有一个例外,就是C99允许:如果结构包含多个成员,那么最后一个成员允许为不完整类型的:

struct frame_1 {
int index;
char name[];
}

以上声明是合法的;

6.结构的成员可以包含一个还没有经过声明的结构指针,这种未经显式声明的结构指针被归类为不完整类型:

struct frame_1 {
struct frame_2 *ptr_frame_2;
} item_1;

以上示例struct frame_2是一个未被声明的结构,它在这里被称为不完整类型;

[C]struct结构化数据的一些要点的更多相关文章

  1. [Python]ctypes+struct实现类c的结构化数据串行处理

    1. 用C/C++实现的结构化数据处理 在涉及到比较底层的通信协议开发过程中, 往往需要开发语言能够有效的表达和处理所定义的通信协议的数据结构. 在这方面是C/C++语言是具有天然优势的: 通过str ...

  2. Spark SQL - 对大规模的结构化数据进行批处理和流式处理

    Spark SQL - 对大规模的结构化数据进行批处理和流式处理 大体翻译自:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/con ...

  3. MySQL 5.7:非结构化数据存储的新选择

    本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...

  4. WordPress插件--WP BaiDu Submit结构化数据插件又快又全的向百度提交网页

    一.WP BaiDu Submit 简介 WP BaiDu Submit帮助具有百度站长平台链接提交权限的用户自动提交最新文章,以保证新链接可以及时被百度收录. 安装WP BaiDu Submit后, ...

  5. 利用Gson和SharePreference存储结构化数据

    问题的导入 Android互联网产品通常会有很多的结构化数据需要保存,比如对于登录这个流程,通常会保存诸如username.profile_pic.access_token等等之类的数据,这些数据可以 ...

  6. 最近打算体验一下discuz,有不错的结构化数据插件

    提交sitemap是每位站长必做的事情,但是提交到哪里,能不能提交又是另外一回事.国内的话百度是大伙都会盯的蛋糕,BD站长工具也会去注册的,可有些账号sitemap模块一直不能用,或许是等级不够,就像 ...

  7. seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码

    seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...

  8. 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验

    [阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...

  9. 详解Google-ProtoBuf中结构化数据的编码

    本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...

随机推荐

  1. centos6.7下安装glibc-2.17

    glibc  所有版本下载地址 : http://ftp.gnu.org/pub/gnu/glibc/ 安装先决条件: #yum install gcc libffi-devel python-dev ...

  2. 11-kubernetes RBAC 及授权

    目录 RBAC role 和 clusterrole rolebinding 和 clusterrolebinding 公共权限 clusterrole user 创建测试 创建role案例 创建 r ...

  3. linux下创建mysql用户和数据库,并绑定

    Linux下输入命令: mysql -uroot -proot123 进入mysql后输入: 查看目前有哪些数据库存在:mysql> SHOW DATABASES; 创建数据库:create s ...

  4. 白话OAuth2用户认证及鉴权标准流程

    一.OAuth2需求场景 在说明OAuth2需求及使用场景之前,需要先介绍一下OAuth2授权流程中的各种角色: 资源拥有者(User) - 指应用的用户 认证服务器 (Authorization S ...

  5. 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  6. 还在用背单词App?使用Python开发英语单词自测工具,助你逆袭单词王!

    学英语广告 最近也许是刚开学的原因,不管是公众号,还是刷抖音,导出都能看到关于学英语.背单词的广告. 不知道现在学生们背单词买的什么辅导材料.反正我们上学那会,<星火阅读>特别的火.记得当 ...

  7. 小白学 Python 爬虫(15):urllib 基础使用(五)

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  8. idea结合maven小项目

    整体构造 (修改 POM 文件 )parent <?xml version="1.0" encoding="UTF-8"?> <project ...

  9. CSS_跳动的心

    详细教程CSS3 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  10. jQuery操作页面的元素

    主要有添加,替换,删除,清空三种方式: 添加又分为,在之前添加,在之后添加,在元素外之前添加,在元素外之后添加.每个添加方式又有俩种方法(效果一模一样): 俩种方法区添加,在原内容之后: p.appe ...