博文
C++入门 7.1.2 结构体类型变量的定义方法及其初始化(2008-10-16 09:43:00)
摘要:
前面只是指定了一种结构体类型,它相当于一个模型,但其中并无具体数据,系统也不为之分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
1. 定义结构体类型变量的方法
可以采取以下3种方法定义结构体类型的变量。
(1) 先声明结构体类型再定义变量名
如上面已定义了一个结构体类型Student,可以用它来定义结构体变量。如
Student student1, student2;
以上定义了student1和student2为结构体类型Student的变量,即它们具有Student类型的结构。如图7.2所示。
图7.2
在定义了结构体变量后,系统会为之分配内存单元。例如student1和student2在内存中各占63个字节(4+20+1+4+4+30=63)。
(2) 在声明类型的同时定义变量
例如:
struct Student //声明结构体类型Student
{ int num;
char name[20];
char sex;
int age;
float score; &nbs......
C++入门 第7章 7.1.1 结构体概述(2008-10-16 09:40:00)
摘要:
在一个组合项中包含若干个类型不同(当然也可以相同)的数据项。C和C++允许用户自己指定这样一种数据类型,它称为结构体。它相当于其他高级语言中的记录(record)。
例如,可以通过下面的声明来建立如图7.1所示的数据类型。
struct Student //声明一个结构体类型Student
{ int num; //包括一个整型变量num
char name[20]; //包括一个字符数组name,可以容纳20个字符
char sex; //包括一个字符变量sex
int age; //包括一个整型变量age
float score; //包括一个单精度型变量
char addr[30]; //包括一个字符数组addr,可以容纳30个字符
}; &nbs......
C++入门 第7章 自定义数据类型(2008-10-16 09:39:00)
摘要:
7.1 结构体类型
7.2 共用体
7.3 枚举类型
7.4 用typedef声明类型
C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。但是由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。因此C++允许用户根据需要自己声明一些类型,例如第5章介绍的数组就是用户自己声明的数据类型。此外,用户可以自己声明的类型还有结构体(structure)类型、共用体(union)类型、枚举(enumeration)类型、类(class)类型等,这些统称为用户自定义类型(user-defined type,UDT)。 本章介绍结构体类型、共用体类型和枚举类型,第8章将介绍类类型。
7.1 结构体类型
7.1.1 结构体概述
有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用。这些组合在一个整体中的数据是互相联系的。例如,一个学生的学号、姓名、性别、年龄、成绩、家庭地址等项,都是这个学生的属性。见图7.1。
......
XForms 和 XPath(2008-10-14 00:22:00)
摘要:
XForms 使用 XPath 对数据急性寻址。这个过程被称为绑定。
XForms 绑定
XForms 使用两个部分来定义数据:XForms 模型和 XForms 用户界面。
XForms 模型是针对数据的一个 XML 模板(实例),而 XForms 用户界面是对数据输入和显示的描述。
XForms 使用 XPath 来定义这个两个部分的连接。这被称为绑定(binding)。
XPath
XPath 用于定义 XML 文档的各部分的 W3C 标准语法。
XPath 使用路径表达式来标示 XML 文档中的节点。这些表达式与您在计算机系统中看到的文件路径表达式非常类似。
XPath 表达式:/person/fname
对 XML 文档中的 fname 节点进行寻址:<person>
<fname>David</fname>
<lname>Smith</lname>
</person>
在我们的 XPath 教程 中学习更多有关 XPath 的知识。
使用 Ref 进行绑定
XForms 模型是这样的:<instance>
<person>
<name>
<fname/>
<lname/>
</name>
</person>
</instance>
XForms 用户界面可使用 ref 属性来捆绑 <input> 元素:<input ref="name/fname">
<label>First Name</label>
</input>
<input ref="name/lname">
<label>Last Name</label>
</input>
上面例子中的 ref="name/fname" 属性是一个指向实例模型中 <fname> 元素的 XPath 表达式。它可将输入域捆绑到正从表单收集数据的 XML 文档(实例)中的 <fnam......
XForms 实例(2008-10-14 00:21:00)
摘要:过 Internet Explorer 进行测试
您可以使用 Internet Explorer 5 或更高的版本来测试这个例子。
请点击例子下面的链接。
一个 XForms 实例
请看这个使用 XForms 的文档:<xforms>
<model>
<instance>
<person>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" method="get"
action="submit.asp"/>
</model>
<input ref="fname">
<label>First Name</label></input><br />
<input ref="lname">
<label>Last Name</label></input><br /><br />
<submit submission="form1">
<label>Submit</label></submit>
</xforms>
页面会显示为这样:
在您的计算机上测试这个例子......
XForms 命名空间(2008-10-14 00:19:00)
摘要:
您应当在 HTML 和 XHTML 1.0 中使用一个 XForms 命名空间。
但是很有可能在 XHTML 2.0 中不再需要了。
XForms 命名空间
官方的 XForms 命名空间是:http://www.w3.org/2002/xforms
如果您需要在 HTML(或者 XHTML 1.0) 中使用 XForms,就必须通过一个 XForms 命名空间声明所有的 XForms 元素。
XForms 预计会成为 XHTML 2.0 的标准组成部分,这样就不再需要 XForms 命名空间了。
这个例子使用的 XForms 命名空间:<html xmlns:xf="http://www.w3.org/2002/xforms">
<head>
<xf:model>
<xf:instance>
<person>
<fname/>
<lname/>
</person>
</xf:instance>
<xf:submission id="form1" method="get"
action="submit.asp"/>
</xf:model>
</head>
<body>
<xf:input ref="fname">
<xf:label>First Name</xf:label></xf:input>
<br />
<xf:input ref="lname">
<xf:label>Last Name</xf:label></xf:input>
<br />
<br />
<xf:submit submission="form1">
<xf:label>Submit</xf:label></xf:submit>
</body>
</html>
在上面的例子中,我使用了针对 XForms 命名空间的 xf......
XForms 模型(2008-10-14 00:16:00)
摘要:模型为集中于表单中的数据定义了一个模板。
XForms 框架
HTML 表单的作用是搜集数据。XForms 的作用是相同的。
通过 XForms,输入数据被描述在两个不同的部分中:
XForms 模型(描述数据和逻辑)
XForms 用户界面(显示和输入数据)
XForms 模型定义了什么是表单,它包含什么数据,以及它应该做什么。
XForms 用户界面定义了输入域,以及它们如何被显示。
XForms 模型
XForms 模型用于描述数据。
数据模型是 XML 文档的一个实例(一个模板)。
XForms 模型定义了一个 <model> 元素内部的一个数据模型:<model>
<instance>
<person>
<fname/>
<lname/>
</person>
</instance>
<submission id="form1" action="submit.asp" method="get"/>
</model>
从上面的例子,您可以看到 XForms 模型使用 一个 <instance> 元素来为需要收集的数据定义 XML 模板,并使用一个 <submission> 元素来描述如何提交数据。
<submission> 模型没有表达任何有关表单可见部分(用户界面)的信息。
XForms 命名空间
假如您忽略了这些例子中的 XForms 命名空间,或者假如您不清楚命名空间的概念,我们会在下一节介绍这个内容。
<instance> 元素
XForms 模型 <instance> 元素来定义数据收集的数据。
XForms 是为某个 XML 文档进行数据收集的。在这个 XForms 模型中的 <instance> 元素定义了这个 XML 文档。
在上面的例子中,表单为其收集数据的数据实例(XML 文档)类似这样:<person>
<fname/>
<lname/>
</person>
在数据收集完毕后......
XForms 简介(2008-10-14 00:13:00)
摘要:
XForms 是下一代的 HTML 表单。
XForms 使用 XML 来创建 web 上的输入表单。
您应当具备的基础知识
在继续学习之前,您需要对下面的知识有基本的了解:
HTML
HTML 表单
XHTML
XML
如果您希望首先学习这些项目,请在 首页 访问这些教程。
什么是XForms?
XForms 是下一代的 HTML 表单
XForms 与 HTML 表单相比更完善,更灵活
XForms 将在 XHTML 2.0 种成为表单标准
XForms 独立于平台和设备
XForms 可从表现分离数据和逻辑
XForms 使用 XML 来定义表单数据
XForms 可存储和传输 XML 文档中的数据
XForms 含有诸如计算以及表单验证等特性
XForms 可减少或根除对脚本的需求
XForms 是 W3C 标准
XForms 是 HTML 表单的继任者
在今天,表单是许多 web 应用程序的重要组成部分。HTML 表单使 web 应用程序从用户那里接收数据成为可能。
今天,在 HTML 表单成为 HTML 标准的组成部分的十年后,网络用户所进行的复杂事务正在超越标准的 HTML 表单的能力极限。
XForms 提供了一种更完善、更安全并独立于设备的方法来处理网络输入。我们应当期待未来的网络解决方案要求使用支持 XForms 的浏览器(所有未来的浏览器均应支持 XForms)。
XForms 可从表现分离数据和逻辑
XForms 使用 XML 来进行数据定义,而 HTML 或 XHTML 用于数据显示。XForms 可把表单的数据逻辑与其表现分离。XForms 数据的定义方式独立于最终用户与应用程序相交互的方式。
XForms 使用 XML 来定义表单数据
通过 XForms,可使用 XML 来表达描述和验证数据的规则。
XForms 使用 XML 来存储和传输数据
通过 XForms,显示在表单中的数据可存储在 XML 文档中,并且从表单提交的数据使用 XML 在因特网上传输。
数据以 Unicode 进行编码和传输。
XForms 独立于设备
把数据与表现分离使得 XForms 独立于设备,因为数据模型可被用于所有的设备。表......
C++入门第6章6.9.3 引用作为函数参数(2008-10-12 08:45:00)
摘要:
有了变量名,为什么还需要一个别名呢?C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能。
到目前为止,本书介绍过函数参数传递的两种情况。
(1) 将变量名作为实参和形参。这时传给形参的是变量的值,传递是单向的。如果在执行函数期间形参的值发生变化,并不传回给实参。因为在调用函数时,形参和实参不是同一个存储单元。
例6.18 要求将变量i和j的值互换。下面的程序无法实现此要求。
#include <iostream>
using namespace std;
int main( )
{ void swap(int,int); //函数声明
int i=3,j=5;
swap(i,j); //调用函数swap
cout<<i<<″ ″<<j<<endl; //i和j的值未互换
return 0;
}
void swap(int a,int b) //企图通过形参a和b的值互换,实现实参i和j的值互换
{ int temp;
temp=a; &nb......
C++入门第6章6.9.2 引用的简单使用(2008-10-12 08:44:00)
摘要:
例6.17 引用和变量的关系。
#include <iostream>
#include <iomanip>
using namespace std;
int main( )
{ int a=10;
int &b=a; //声明b是a的引用
a=a*a; //a的值变化了,b的值也应一起变化
cout<<a<<setw(6)<<b<<endl;
b=b/5; //b的值变化了,a的值也应一起变化
cout<<b<<setw(6)<<a<<endl;
return 0;
}
a的值开始为10,b是a的引用,它的值当然也应该是10,当a的值变为100(a*a的值)时,b的值也随之变为100。在输出a和b的值后,b的值变为20,显然a的值也应为20。
运行记录如下:
100 100 (a和b的值都是100)
20 20 (a和b的值都是20)
......