[C]struct结构化数据的一些要点
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结构化数据的一些要点的更多相关文章
- [Python]ctypes+struct实现类c的结构化数据串行处理
1. 用C/C++实现的结构化数据处理 在涉及到比较底层的通信协议开发过程中, 往往需要开发语言能够有效的表达和处理所定义的通信协议的数据结构. 在这方面是C/C++语言是具有天然优势的: 通过str ...
- Spark SQL - 对大规模的结构化数据进行批处理和流式处理
Spark SQL - 对大规模的结构化数据进行批处理和流式处理 大体翻译自:https://jaceklaskowski.gitbooks.io/mastering-apache-spark/con ...
- MySQL 5.7:非结构化数据存储的新选择
本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...
- WordPress插件--WP BaiDu Submit结构化数据插件又快又全的向百度提交网页
一.WP BaiDu Submit 简介 WP BaiDu Submit帮助具有百度站长平台链接提交权限的用户自动提交最新文章,以保证新链接可以及时被百度收录. 安装WP BaiDu Submit后, ...
- 利用Gson和SharePreference存储结构化数据
问题的导入 Android互联网产品通常会有很多的结构化数据需要保存,比如对于登录这个流程,通常会保存诸如username.profile_pic.access_token等等之类的数据,这些数据可以 ...
- 最近打算体验一下discuz,有不错的结构化数据插件
提交sitemap是每位站长必做的事情,但是提交到哪里,能不能提交又是另外一回事.国内的话百度是大伙都会盯的蛋糕,BD站长工具也会去注册的,可有些账号sitemap模块一直不能用,或许是等级不够,就像 ...
- seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码
seo之google rich-snippets丰富网页摘要结构化数据(微数据)实例代码 网页摘要是搜索引擎搜索结果下的几行字,用户能通过网页摘要迅速了解到网页的大概内容,传统的摘要是纯文字摘要,而结 ...
- 【阿里云产品公测】结构化数据服务OTS之JavaSDK初体验
[阿里云产品公测]结构化数据服务OTS之JavaSDK初体验 作者:阿里云用户蓝色之鹰 一.OTS简单介绍 OTS 是构建在阿里云飞天分布式系统之上的NoSQL数据库服务,提供海量结构化数据的存储和实 ...
- 详解Google-ProtoBuf中结构化数据的编码
本文的主要内容是google protobuf中序列化数据时用到的编码规则,但是,介绍具体的编码规则之前,我觉得有必要先简单介绍一下google protobuf.因此,本文首先会介绍一些google ...
随机推荐
- centos7环境搭建一台mysql服务器启动多个端口
在一台服务器上启动多个mysql实例,分别用不同的端口号,因centos7版本安装mysql5.7后不存在mysqld_multi .mysqld_safe等命令,做踩坑总结 Mysql多实例实现的3 ...
- 使用python删除指定文件夹及子文件,保留多少
python版本为:2.7 import os,time,shutil,datetime def rmdir(deldir,N): dellist=os.listdir(deldir) deldate ...
- 【并发编程】关于Thread类的详细介绍
多线程编程基础--Thread类 Thread类是Java中实现多线程编程的基础类.本篇博客就来介绍下Thread类的常用API和常见用法. Thread类常用的方法如下: Thread.active ...
- 系统默认的alert弹出框总会带有域名
最近在开发Hybrid APP时发现用系统默认的alert弹出框总会带有域名,用户体验就比较不好了.想了一种办法来解决就是覆盖alert的方法. (function(){ window.a ...
- shell 循环读取文件及字符串转为数组
文件/etc/hdocker_config内容如下: 30.72.63.94 30.72.63.95 30.72.63.96 30.72.63.97 /tmp/lasclocker.tar maste ...
- GitHub 上值得参考的完整的 iOS-App 源码
转自:https://www.zhihu.com/question/28518265 作者:wjh2005链接:https://www.zhihu.com/question/28518265/answ ...
- openlayers5-webpack 入门开发系列结合 turf.js 实现等值线(附源码下载)
前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...
- 2019CCPC秦皇岛 E题 Escape(网络流)
Escape Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- HDU-6119
度度熊喜欢着喵哈哈村的大明星——星星小姐. 为什么度度熊会喜欢星星小姐呢? 首先星星小姐笑起来非常动人,其次星星小姐唱歌也非常好听. 但这都不是最重要的,最重要的是,星星小姐拍的一手好代码! 于是度度 ...
- Selenium 4.0 Alpha更新日志
早在2018年8月,整个测试自动化社区就发生了一件重大新闻:Selenium的创始成员Simon Stewart在班加罗尔Selenium会议上正式确认了Selenium 4的发布日期和一些重要更新. ...