[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 ...
随机推荐
- 深入浅出Spring(三)
我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming),即面向切面编程. 1.OOP回顾 在介绍AOP之 ...
- python numpy学习
以下代码来源于本博文作者观看大神视频并纯手敲. 目录 numpy的属性 创建array numpy的运算1 随机数生成以及矩阵的运算2 numpy的索引 array合并 array分割 numpy的浅 ...
- OC 初次接触
初次接触ObjC时,会发现许多和其它语言不同的地方,会看到很多的+,- ,[ ,] ,@, NS等符号,这些符号在以后的编程中将经常看到,这部分内容在第二节中介绍.先熟悉一下ObjC的代码: #imp ...
- 寻找键盘bug
被这句阻拦了
- 西瓜哥:公有云也“All-Flash”?
本文转载自 高端存储知识 Gartner在2018年Market Insight: Preparing for the SSD Rise and HDD Demise一文中指出:当闪存介质降到HDD每 ...
- luogu P5058 [ZJOI2004]嗅探器
题目描述 某军搞信息对抗实战演习,红军成功地侵入了蓝军的内部网络,蓝军共有两个信息中心,红军计划在某台中间服务器上安装一个嗅探器,从而能够侦听到两个信息中心互相交换的所有信息,但是蓝军的网络相当的庞大 ...
- python实现十大核心算法(桶排没实例)
# author:sevenduke # 2019-06-11 # 一.交换排序 # 排序算法的温故:冒泡排序 def dubblesort(arr): for i in range(0, len(a ...
- Statistics : Data Distribution
1.Normal distribution In probability theory, the normal (or Gaussian or Gauss or Laplace–Gauss) dist ...
- 回文自动机pam
目的:类似回文Trie树+ac自动机,可以用来统计一些其他的回文串相关的量 复杂度:O(nlogn) https://blog.csdn.net/Lolierl/article/details/999 ...
- 正则replace 回调函数里接收的参数是什么?
前言 我们都知道 replace 在做替换处理方面会很常用,通常也是第一个会想到的方法.replace 第一个参数可以传入 string 或 RegExp,第二个参数可以传入 string 或 一个回 ...