精华内容
下载资源
问答
  • 当然,格式正确的 XML 文档是满足以下三个基本结构需求的文档: 有一个包含所有其它元素的父(或根)元素 每个开始标记都有结束标记 所有元素都正确嵌套的 清单 1 是一个格式正确的 XML 示例。请注意:该文档的父...

    为什么要格式正确?

    当 XML 开发人员谈到格式正确和格式不正确的 XML 时,我们并不是参加美学讨论。当然,格式正确的 XML 文档是满足以下三个基本结构需求的文档:

    • 有一个包含所有其它元素的父(或根)元素
    • 每个开始标记都有结束标记
    • 所有元素都正确嵌套的

    清单 1 是一个格式正确的 XML 示例。请注意:该文档的父元素是 <person> ,每个开始标记都有一个结束标记,并且每个结束标记都有与其开始标记完全相同的定义。通常,开始标记和结束标记之间包括的是信息或文本。不过,在某些情况下,标记之间没有包括信息或文本。空标记必须用一个右斜杠来结束。 <nothing/> 就是一个空标记。


    清单 1. 格式正确的 XML


    清单 2 是一个格式不正确的 XML 示例。它举例说明了三种常见错误。首先,开始和结束 <firstname> 标记没有完全匹配。其次, <lastname> 标记没有结束标记。最后,空标记没有用一个右斜杠结束。


    清单 2. 格式不正确的 XML

    DTD 中有什么内容?

    XML 的优点在于它允许您定义自己的有意义的标记,因此您可以最大程度地定制文档。但 XML 就是 XML(可扩展),而人就是人(疯狂的人),这可能很快就会无法控制。解决方案是 DTD,它指定了 XML 文档的标记。简而言之,DTD 指定:可以在文档中存在的元素、那些元素可以具有的属性、在元素内部元素的层次结构以及元素在整个文档中出现的顺序。

    虽然 DTD 不是必需的,但它们确实带来方便。DTD 适合三个基本用途。它能:

    • 对标记编制文档
    • 加强标记参数内部的一致性
    • 使 XML 语法分析器能够确认文档

    如果不对 XML 文档进行 DTD 定义,文档就无法由 XML 语法分析器进行确认。使用 XML Schema 实例来代替 DTD 如何?清单 3 是清单 1 中显示的 XML 文档的 DTD。

    清单 3. 精简 person.xml 的 DTD


    关于示例的几点说明

    清单 3 中 DTD 的第一行定义了 XML 文档的父元素: person 。person 元素有两个子元素: firstnamelastname

    第二和第三行包含了元素属性 #PCDATA ,它表明 firstnamelastname 元素可能包含经过语法分析的字符数据(在这种情况下是文本)。DTD 文件的最后一行描述了一个空标记: nothing

    从清单 3 中的 DTD 可以看出,任何阅读我们的 XML 文档的人(以及对它进行语法分析的语法分析器)都知道 person 元素仅包含两个文本元素: firstnamelastname 。此外,DTD 规定,在整个文档中, firstname 元素必须在 lastname 元素之前出现。

    在转到更复杂的示例之前,让我们回顾一下一些最常用的 DTD 语法元素。

    DTD 语法快速指南

    A、B、C 和 D 是在下例中代表元素的变量。

    元素必须有正好一个 A 、至少一个 B (由加号表示)、零个或多个 C (由星号表示)以及零个或一个 D (由问号表示):


    元素可能有 ABC 之一:


    元素不包含任何内容:


    元素可以包含在 DTD 中列出的任何元素:


    元素可能包含经过语法分析的字符数据或另一个元素( element2 )。星号(*)表示混合内容模型 — 其中元素可以包含不同类型的属性。


    下例将文本 "entity reference" 插到文档中它出现的任何地方:


    可以看到在 XML 文档中该实体引用元素如下:


    下例表明其元素是一个包含三个属性的空标记:属性 1( att1 )是一个可选属性,属性 2( att2 )是带有固定值 "A" 的属性,属性 3( att3 )是必需的文本属性。


    可以看到在 XML 文档中使用的这个元素如下:


    属性 CDATA 表示包括的信息应该是文本。 ID 属性表明必须填入唯一的标识。每个元素只能有一个 ID 属性。另外, CDATA 表示 att2att3 可能包含任何字符串。

    关于 XML 的几点说明

    对 XML 的深入探讨主要考虑的是文档头中的几个元素,从以下开始:


    每个 XML 文档都必须包含这样的一个头,向 XML 语法分析器表示它是一个 XML 文档。头中的下一行告诉 XML 语法分析器该文档是使用什么字符编码来创建的:


    在 Unix 系统上创建的 XML 文档和在 Windows 系统上创建的 XML 文档可能有不同的编码。

    还可以为第一行设置可选的 standalone 属性。standalone 的缺省值是 nono 值表示该 DTD 定义是在另一个文件中描述的。 yes 值表明该 DTD 应该在 XML 文档内部定义。我没有为示例设置这个属性;如果想设置,它应该看起来如下:


    还应该注意使这个文档格式正确的方法。例如,所有空标记都用一个右斜杠结束,如下所示:


    还请注意 CDATA 用于对所有若不进行转义就会以 XML 语言解释的任何数据进行转义,例如:


    如果适当的格式化,这一行将以文本内容显示:


    可以从 XML 文件的进一步研究中获益,甚至可能从对您自己的文件运行 XML 语法分析器获益。

    清单 5. people.dtd 的完整清单


    关于 DTD 的几点说明

    通过比较 XML 文件及其 DTD,您应该能够方便地定义 DTD 和 XML 文件中各元素之间的关系。不过,还有两个剩下的元素,您可能感兴趣。

    清单 4 包含了对实体的引用。


    实体引用用于代替在 DTD 文档中定义的特定字符或字符串。进行了语法分析后,该实体引用将读作:


    还应该注意, <other> 标记的内容类型是 ANY 。这表示 <other> 可能包含所有以前已在 DTD 中声明过的元素。因此, other 元素可能包含 carhouse 元素,如下:


    展开全文
  • 引用参考文献标准格式

    万次阅读 2014-10-29 21:24:03
    引用参考文献标准格式 参考文献(即引文出处)的类型以单字母方式标识: M——专著,C——论文集,N——报纸文章,J——期刊文章,D——学位论文,R——报告,S——标准,P——专利;对于不属于上述的文献类型...

    引用参考文献标准格式


    参考文献(即引文出处)的类型以单字母方式标识:

    M——专著,C——论文集,N——报纸文章,J——期刊文章,D——学位论文,R——报告,S——标准,P——专利;对于不属于上述的文献类型,采用字母“Z”标识。

    参考文献的格式要求很多,一般来说参考文献的格式都要符合国标GB7714-87《文后参考文献著录规则》,但实际中很多出版社和期刊对论文的要求也不尽相同。发现周围的很多人对论文参考文献的规范格式不是很清楚,所以把规范格式贴出来。

    参考文献著录格式及示例

    1 专著著录格式

    [序号]著者.书名[M].版本(第一版不写).出版地:出版者,出版年.起止页码

    例:

    [1]孙家广,杨长青.计算机图形学[M].北京:清华大学出版社,1995.26~28

    Sun Jiaguang, Yang Changqing. Computer graphics[M].Beijing: Tsinghua University Press,1995.26~28(in Chinese)

    例:

    [2]Skolink M I. Radar handbook[M]. New York: McGraw-Hill, 1990

    2 期刊著录格式

    [序号]作者.题名[J].刊名,出版年份,卷号(期号):起止页码

    例:

    [3]李旭东,宗光华,毕树生,等.生物工程微操作机器人视觉系统的研究[J].北京航空航天大学学报,2002,28(3):249~252

    Li Xudong, Zong Guanghua, Bi Shusheng, et al. Research on global vision system for bioengineering-oriented micromanipulation robot system[J]. Journal of Beijing University of Aeronautics and Astronautics, 2002,28(3):249~252(in Chinese)

    3论文集著录格式

    [序号]作者.题名[A].见(英文用In):主编.论文集名[C].出版地:出版者,出版年.起止页码

    例:

    [4]张佐光,张晓宏,仲伟虹,等.多相混杂纤维复合材料拉伸行为分析[A].见:张为民编.第九届全国复合材料学术会议论文集(下册)[C].北京:世界图书出版公司,1996.410~416

    例:

    [5]Odoni A R. The flow management problem in air traffic control[A]. In: Odoni A R, Szego G,eds. Flow Control of Congested Networks[C]. Berlin: Springer-Verlag,1987.269~298

    4 学位论文著录格式

    [序号]作者.题名[D].保存地点:保存单位,年

    例:

    [6]金宏.导航系统的精度及容错性能的研究[D].北京:北京航空航天大学自动控制系,1998

    5 科技报告著录格式

    [序号]作者.题名[R].报告题名及编号,出版年

    例:

    [7]Kyungmoon Nho. Automatic landing system design using fuzzy logic[R].AIAA-98-4484,1998

    6 国际或国家标准著录格式

    [序号]标准编号,标准名称[S]

    例:

    [8]GB/T 16159-1996,汉语拼音正词法基本规则[S]

    7 专利著录格式

    [序号]专利所有者.专利题名[P].专利国别:专利号,出版日期

    例:

    [9]姜锡洲.一种温热外敷药制备方案[P].中国专利:881056073,1989-07-06

    8 电子文献著录格式

    [序号]作者.题名[电子文献/载体类型标识].电子文献的出处或可获得地址,发表或更新日期/引用日期

    例:

    [10]王明亮.关于中国学术期刊标准化数据系统工程的进展[EB/OL]. http://www.cajcd.edu.cn/pub/wm1.txt...8-16/1998-10-04

    说明:

    ① 参考文献应是公开出版物,按在论著中出现的先后用阿拉伯数字连续排序.

    ② 参考文献中外国人名书写时一律姓前,名后,姓用全称,名可缩写为首字母(大写),不加缩写点(见例2).

    ③ 参考文献中作者为3人或少于3人应全部列出,3人以上只列出前3人,后加"等"或"et al"(见例3).

    ④ 在著录中文参考文献时应提供英文著录,见例1、例3.

    ⑤ 参考文献类型及其标识见表1,电子参考文献类型及其标识见表2.

    ⑥ 电子文献的载体类型及其标识为: 磁带——MT, 磁盘——DK,光盘——CD,

    联机网络——OL.

    表1 参考文献类型及文献类型标识

    参考文献

    类型 专著 论文集 报纸文章 期刊文章 学位论文 报告 标准 专利

    文献类型标识 M C N J D R S P

    表2 电子参考文献类型及其标识

    电子参考文献类型 数据库 计算机程序 电子公告

    电子文献类型标识 DB CP EB

    科技期刊论文的参考文献

    1 参考文献的功能与作用

    (1)参考文献是科技论文的重要组成部分,它不仅能为作者的论点提供有力的论据,而且可以精练文字节约篇幅,增加论文的信息量,具有很高的信息价值。

    (2)论文作者在其课题的选题论证、实验研究、以及总结和书写论文的过程中,都要参阅和利用大量的科学文献,由于作者在撰写论文时,不可能将所有引用前人成果都详尽地复述,只能将其主要引用文献注明出处列于文后。

    (3)参考文献注明了被引理论、观点、方法、数据的来源,反映了论文的真实科学依据,没有参考文献的科学论文,应视为作者忽略了科学工作的继承性,也反映了作者科学学风和态度的欠缺。

    (4)引用一定数量的参考文献,既表明学科的继承性和作者对他人劳动成果的尊重,也为编辑部、审稿专家和读者提供了鉴别论文价值水平的重要信息。

    (5)参考文献为读者和审阅专家提供了与论文有关的文献题录,便于检索,以达到共享信息资源和推动科技进步的作用。

    (6)著录参考文献有助于科技信息人员进行信息研究和文献计量研究。

    2 参考文献著录的一般原则

    2.1 只著录最必要、最新的参考文献

       著录的文献要精选,仅限于著录作者在论文中直接引用的文献。

    2.2 只著录公开发表的文献

      公开发表是指在国内外公开发行的报刊或正式出版的图书上发表。在供内部交流的刊物上发表的文章和内部使用的资料,尤其是不宜公开的资料,均不能作为参考文献著录。国内外学术会议上交流的论文一般也不宜作为参考文献著录。

    2.3 采用规范化的著录格式    

      论文作者应熟练掌握、严格执行国标GB7714-87《文后参考文献著录规则》。

    3 参考文献的标注方法——顺序编码制

      国标GB7714-87《文后参考文献著录规则》规定:"引用文献的标准方法可以采用‘顺序编码制',也可采用'著者一出版年制'。"《中国公路学报》与全国大多数科技期刊一样,采用顺序编码制。

    顺序编码制是按文章正文部分(包括图、表及其说明)引用的先后顺序连续编码。在文中参考文献的序号均置于方括号内,并视具体情况把序号作为上角标,或者作为语句的组成部分。应注意:凡不是句子组成部分的文献序号及其方括号,须作为右上角标处理。引用多篇文献时,只须将各篇文献的序号在方括号内全部列出,各序号间用",",如遇连续序号,可在起止序号中间加"~"。在文后参考文献表中,各条文献按序号排列,序号编码不再加方括号。

    4 参考文献的著录项目与著录格式

    4.1

    连续出版物

    序号作者.题名.刊名,出版年份,卷号(期号):引文所在的起始或起止页码

    4.2

    专著

    序号作者·书名·版本(第1版不标注)·出版地:出版者,出版年·引文所在的起始或起止页码

    4.3

    论文集

    序号作者.题名.见(英文用In):主编.论文集名.出版地:出版者,出版年.引文所在起始或起止页码

    4.4

    学位论文

    序号作者.题名:[博士或硕士学位论文].保存地点:保存单位,年份

    4.5

    专利

    序号专利申请者.题名.专利国别,专利文献种类,专利号.出版日期

    4.6

    技术标准

    序号起草责任者.标准代号标准顺序号一发布年标准名称.出版地:出版者,出版年

    4.7

    会议文献、科技报告的著录项目与著录格式均可按专著著录

    5 参考文献著录中需要注意的几个问题

    (1)个人作者(包括译者、编者)著录时一律姓在前,名在后,由于各国(或民族)的姓名写法不同,著录时应特别注意。名可缩写为首字母(大写),但不加编写点(·)。

    缅甸、印度尼西亚人名多为一个字,如 Sukarno(印尼)文献著录为(以下用"→"表示) Sukarno。缅甸人名前的"吴"、"德钦"为尊称,书写时为"吴努",西文为U Nu, U Thant→Nu U和 Thant U。

    姓前名后:见于中国人(汉族等),日本人(但用拉丁字符转写时常用名前姓后的写法)、朝鲜人、越南人、匈牙利人。名前姓后:见于原苏联人、英国人、捷克人、丹麦人、芬兰人、意大利人、挪威人、波兰人、瑞典人、法国人、荷兰人、德国人、葡萄牙人、西班牙人、埃及人、阿拉伯人、美国人、加拿大人、巴西人等。

    英国、美国、加拿大人。如J C Smith→Smith J C;连姓如 E. C. Bate-Smith→Bate-smith E C;父子、几世如 F. W. Day, Jr(小)→Day F W Jr, A. B. TollⅢ→Toll A B Ⅲ。

    法国人姓前有冠词ie, la, les或前置词de, du, de la, des,文献著录时放在姓前。如 Jules LeGoff→LeGoff J ; Guy de Maupas-sant→de Maupassant G。

    德国人和荷兰人姓前有词头、词组或其缩写词,应写在姓前。如 Paul von Hindenburg→von Hindenburg P; Hans zurHorst-Meyer→zur Horst-Meyer H。

    葡萄牙人和巴西人姓前有词头 do,da,dos,das,应写在姓前。如 Silvio do Amaral→do Amaral S.

    西班牙人名常包括其父母姓,书写时父姓在母姓之前。如 Casimir Gomez Ortega→ Gomez-Ortega C; Juan Perez y Fernan-dez→Perez y Fernandez j; Gonzalo Ley h(higo, "其子"之意)→Ley G h。

    埃及人和阿拉伯人,姓前有前缀或其变体,如 ed, ibn, ahedl, abdoul,abu, abou, aboul或el,文献著录时用连接号与姓相连。如 Aly Abdel Aziz→Abdel-Aziz A; Kamel el Metwali→el-Metwali K。无前缀或其变体者,如 Hassan Fahmy Kahlil KhalilH F。

    泰国人,如 Somsokdi Duangjai→Duangjai S。

    (2)作者(主要责任者)为3人或不多于3人应全部写出,之间几","号相隔;3人以上只列出前3人,后加"等"或相应的文字如"et al","等"或"et al"前加 ","号。

    (3)每篇论文所引用的参考文献一般不宜超过8条。

    (4)文后参考文献著录时刊名不用书名号(《》)。

    6 参考文献的核对

      为了使文内引文标注与参考文献表编排格式标准化和规范化,可按下列项目检查核对,以免发生遗漏或差错;

    (1)参考文献格式是否合乎要求?

    (2)正文引文的标注方法是否正确?

    (3)是否采用连续编码制,其编码是否按顺序出现,有无缺漏?

    (4)正文引文与参考文献表是否对应?

    (5)参考文献表中各条参考文献著录项目是否齐全?有无缺项,排列是否符合规定?

    (6)作者姓名是否姓在前,名在后?

    (7)题名、刊名(或书名)有无遗漏或书写错误?外文应大写的字母是否按规定书写?

    (8)出版地、出版者、出版年是否齐全准确?

    (9)标点符号是否合乎标准规定?

    展开全文
  • C++ 引用的本质是什么?

    千次阅读 2017-04-07 23:45:16
    C++中的引用本质上是 一种被限制的指针。由于引用是被限制的指针,所以引用是占据内存的。在使用高级语言的层面上,是没有提供访问引用的方法的。并且引用创建时必需初始化,创建后还不能修改。下面是找到的相关资料...

    结论:

    ①C++中的引用本质上是 一种被限制的指针(类似于线性表和栈,栈是被限制的线性表,底层实现相同,只不过逻辑上的用法不同而已)。

    ②由于引用是被限制的指针,所以引用是占据内存的。

    在使用高级语言的层面上,是没有提供访问引用的方法的。并且引用创建时必需初始化,创建后还不能修改。

    下面是找到的相关资料,来证明以上结论。

    ************************************************************************************

    测试引用是占据内存的

    C++中的“引用变量”它本身地址能不能取到呢?

    用&总是取到的是它目标单元地址.


    int a=7,b=8;
    int &x=a; 如何得到x的地址 &x呢 ?
    试了一下 &x,总是得到 a 的地址,而得不到x的地址
    用C++BUILDER6测试。
    我认为“引用”变量仍要占单元空间,存放的是一个地址,但编译器阻止你对它本身的任何访问,从一而终总是指向初始的目标单元,高手可以用插入汇编语句访问它的单元,在汇编里,引用的本质就是“间接寻址”,格式: [目标地址]
    合法的办法不行,就只能用非法的办法了,利用引用的上一单元的地址,假设是连续分配的,
    就是找到引用的地址了.全局变量是从上到下分配的,局部变量是从下往上倒着分配的(实验原理,下面用指针的办法改变了 引用对象。
    #include "stdio.h"
    int m=5,n=9;
    int f=11; // f的下一地址就是g的
    int &g=m;
    // 全局变量
    main()
    { // 局部变量
    int a=5,b=9;
    int u=11; // u的下一地址就是x的
    int &x=a;

    int **p=(int **)&u;
    p[-1]=&b; // 下一地址就是x, 将它改到b的地址
    printf("%d %d %d\n",a,b,x); // 呵呵,x 已改指到了b
    //-------------------------------
    int **q=(int **)&f;
    q[1]=&n; // 下一地址就是g, 将它改到n的地址
    printf("%d %d %d\n",m,n,g); // 呵呵,g 已改指到了n
    }
    我这是C++BUILDER6试的,正确! 证实了引用本质就是一个地址单元, 同样也分配空间。
    但其它编译器不知能不能成。
    资料出处:https://zhidao.baidu.com/question/570611106.html
    *******************************************************************************************************************
    对引用的详细分析

    在大学的时候,教材里这么说的“引用是个别名...引用作为目标的别名而使用...引用不是值不占存储空间...引用只有声明,没有定义...” 那么,引用到底占不占内存空间,引用的本质是什么?

    下面举个例子: int a = 10; int &b = a;

    这里,显然,b是一个引用。 语句“int a = 10;”,在内存中申请了一个int型变量,32位机中占4个字节,那么变量名a放哪里了呢,有些人可能会有这个疑问。 其实a代表的是一个内存地址,you know,计算机访问内存中的数据,全部是通过地址进行访问(这个结论你可以从《汇编》的寻址方式中得出)。在编译器将你的代码生成目标文件时,它会用这个地址替代所有的a,因此目标文件中也就没有变量名a了,所以,变量名a不会占用内存也就理所当然了。 那么,引用 b会不会占内存空间呢?由于受大学课本的影响(引用b只是a的别名,b其实就是a本身),我很自然的会想到,b跟a一样,在编译后,所有的b也都用a的这个地址去替代,所以b也不会占用任何内存空间。 前段时间,这个问题在快速入门群和高级专业群中各位朋友讨论了一下,大家也众说纷纭。在网上也搜到很多帖子,说引用只是一个别名,它不会占用空间。 BUT,与各位高手的交流,查看众多网站,最后得出的结论是:   引用的本质是指针,而且是常量指针,占用4个字节的空间 也就是说,“int &b = a;”会开辟一块4个字节的空间,用于存放那个地址,当然,变量名b不会占用空间。 如果你听糊涂了,没关系,记住一条:引用b,本质就是一个常量指针(当然使用时不同)

    下面是网络上比较权威的说法;另外,还有都史用于验证引用占内存的实例。如果大家有什么异议,本人希望与大家多多交流。

    探索c++的底层机制

    在看这篇文章之前,请你先要明白一点:那就是c++为我们所提供的各种存取控制仅仅是在编译阶段给我们的限制,也就是说是编译器确保了你在完成任务之前的正确行为,如果你的行为不正确,那么你休想构造出任何可执行程序来。但如果真正到了产生可执行代码阶段,无论是c,c++,还是pascal,大家都一样,你认为c和c++编译器产生的机器代码会有所不同吗,你认为c++产生的机器代码会有访问限制吗?那么你错了。什么const,private,统统没有(const变量或许会放入只读数据段),它不会再给你任何的限制,你可以利用一切内存修改工具或者是自己写一个程序对某一进程空间的某一变量进行修改,不管它在你的印象中是private,还是public,对于此时的你来说都一样,想怎样便怎样。另外,你也不要为c++所提供的什么晚期捆绑等机制大呼神奇,它也仅仅是在所产生的代码中多加了几条而已,它远没有你想象的那么智能,所有的工作都是编译器帮你完成,真正到了执行的时候,计算机会完全按照编译器产生的代码一丝不苟的执行。你明白我在说什么吗?对了,如果你从前接触过汇编,只要你反汇编一段c++代码,你就会说:原来是这么回事呀,c++只不过是把我们的问题进行了更高层次的抽象,但只要你解开面纱,回到问题的本源,一切都将变得不再神秘……

    (以下的反汇编代码均来自visial c++ 7.0)  一.让我们从变量开始-----并非你想象的那么简单 变量是什么,变量就是一个在程序执行过程中可以改变的量。换一个角度,变量是一块内存区域的名字,它就代表这块内存区域,当我们对变量进行修改的时候,会引起内存区域中内容的改变。但是你若是学习过汇编或是计算机组成原理,那么你就会清楚对于一块内存区域来说,根本就不存在什么名字,它所仅有的标志就是他的地址,因此我们若想修改一块内存区域的内容,只有知道他的地址方能实现。看来所谓的变量一说只不过是编译器给我们进行的一种抽象,让我们不必去了解更多的细节,降低我们的思维跨度而已。例如下面这条语句: int a=10; 按照我们的思维习惯来讲,就是“存在一个变量a,它的值是10”,一切都显得那么的自然。我们不必去在乎什么所谓的地址以及其他的一些细节。然而在这条语句的底层实现中,a已经不能算是一个变量了,它仅仅是一个标记,代表一个地址的标记: mov dword ptr[a],0Ah; 怎么样,这条语句不像上面那条易于接受吧,因为它需要了解更多的细节,你几乎不能得到编译器的任何帮助,一切思维上的跨越必须由你自己完成。这条语句应该解释为“把10写入以a为地址的内存区域”。你说什么?a有些像指针?对,的确像,但还不是,只不过他们的过程似乎是类似的。这里所说的跨越实际上就是从一个现实问题到具体地址以及内存区域的跨越。 二.引用:你可以拥有引用,但编译器仅拥有指针(地址) 看过了第一条,你一定对编译器的工作有了一定的了解,实际上编译器就是程序员与底层之间的一个转换层,它把一个高级语言代码转换为低级语言代码,一个编译器完成的转换跨度越大,那么它也就会越复杂,因为程序员的工作都由他代为完成了。C++编译器必然比汇编编译器复杂就是这个道理。如果我问你引用和指针是一样的吗?你或许会说当然不一样了,指针容易产生不安全的因素,引用却不会,真的不会吗?我们来看下面这段代码: int *e=new int(10); int &f=*e; delete e; f=30; 你认为上面这段代码怎么样,我感觉就不很安全,它和指针有相同的隐患。因为它所引用的内存区域就不合法。 我个人认为,所谓的引用其实就是一种指针,只不过二者的接口并不相同,引用的接口有一定的限制。指针可以一对多,而引用却只能一对一,即&refer不能被改变,但却并不能说一对一就是安全的,只不过危险的系数降低罢了。引用比指针更容易控制。 Ok,下面来说说指针,曾经有过汇编经验的人一定会说,恩,指针的某些地方有些像汇编,尤其是那个“*”,怎么就那么像汇编中的“[]”啊。呵呵,的确,它也涵盖了一个寻址的过程。看来指针的确是个比较低级的东西。然而引用却并不那么直接,虽然程序员用起来方便安全了许多。但是你要清楚,只有你可以拥有引用,编译器可没有这个工具,计算机并不认识这个东西。因此,它的底层机制实际上是和指针一样的。不要相信只有一块内存拷贝,不要认为引用可以为你节省一个指针的空间,因为这一切不会发生,编译器还是会把引用解释为指针。不管你相不相信,请看下面这段代码: int& b=a; lea eax,[a]; mov dword ptr[b],eax;把a的地址赋给地址为b的一块内存

    b=50; mov eax,dword ptr[b]; mov dword ptr[eax],32h;

    int *d=&a; lea eax,[a]; mov dword ptr[d],eax

    *d=60; mov eax,dword ptr[d] mov dword ptr[eax],3ch; 以上的代码均来自具体的编译器,怎么样,相信了吧,好,让我再来做一个或许不怎么恰当的比拟,你一定编过有关线性表和栈的程序吧,线性表是一个非常灵活的数据结构,在他上面有许多的操作,然而栈呢,它是一个限制性操作的线性表,它的底层操作实际上是由线性表操作实现的。就好比stack与vector的关系,因此指针和引用的关系就好比线性表和栈的关系,引用也就是受限的指针,它对外的接口和指针虽然并不一样,但底层是相同的。 下面再来看看引用的一个重要用途,作为函数的参数传递的时候是怎样的情形: void swapr(int &a, int &b); void swapr(int* a, int *b);

    int a=10; int b=20;

    swapr(a, b); lea eax,[a];  push eax; //把a的地址压入堆栈 lea ecx,[b]; push ecx; call swapr;

    swapr(&a, &b); lea eax,[a]; push eax; lea ecx,[b]; push ecx; call swapr; 怎么样,用引用和指针传递参数无论是在效率上还是在空间上都是完全一样的,如果妄想不传入地址就修改实参的值,简直就是天方夜谭,这就说明引用的本质就是指针。毕竟它们的行为都太相似了,如果不是这样,你还有什么方法去实现引用吗?记住,引用只不过是编译器为你提供的一个有用且安全的工具,对于机器代码可无法表示它,它把指针一对多的缺点去除,禁止了你的不安全的操作。但回到问题的本源,他们没有任何区别。

    都史的实例:

    #include <iostream.h>

    class A { double *m_pDb; };

    class B { double &m_db; public: B(double db = 0) : m_db(db) {} };

    int main() { cout << "size of class A:"<<sizeof(A) << endl; cout << "size of class B:"<<sizeof(B) << endl; return 0; }

    结果:

    size of class A:4

    size of class B:4

    资料出处:http://www.cnblogs.com/rollenholt/articles/1907408.html

    展开全文
  • 1.引用的参考文献要忠实于原文 参考文献,即是对该文献的借鉴和参考,我们要在保留原文献的理论中进行借鉴,作者无权更改原作者的本意,只需向读者介绍原作者使用的方法、得出的结果和结论等。作者可以对原作者使用...

    在论文写作的过程中,参考文献是必不可少的一项,很多作者也会因为参考文献的问题而没有准确的论证自己的观点,这时候就要求在写作之前充分了解参考文献。

    1.引用的参考文献要忠实于原文

    参考文献,即是对该文献的借鉴和参考,我们要在保留原文献的理论中进行借鉴,作者无权更改原作者的本意,只需向读者介绍原作者使用的方法、得出的结果和结论等。作者可以对原作者使用的方法、得出的结果和结论等发表看法,但不能肆意更改,不管是故意的,还是无意的。要想忠实于原文,最好的办法就是用之前仔细阅读原文,正确理解作者的本意,尽量不要转引,以免以讹传讹,损害原作者、读者,还有自己。

    2.尽量选用原始文献

    我们很多人也许有这样的经历,写文章前,都会查阅大量与自己论文研究相关的综述。因此在写文章时也会引用大量综述论文(这也是为什么综述文章被引用率都很高)。其实我们在做研究看文献时,都希望看到原始文献。比如,我们在阅读一篇文章的引言或讨论部分,对其引用的某些研究结果很感兴趣,翻到最后参考文献一看,却来自一篇综述,自己难免失望。还得去查那篇综述去追踪原始文献。因此自己写文章,除了一些概括性的话,在研究进展介绍和解释自己结果时,尽可能引用原始文献。

    3.应注意参考文献的著录格式

    因参考文献的著录格式各刊不尽相同,投稿前作者应注意杂志的有关规定,至少得先看看有关期刊发表的论文的参考文献是如何标注的,以了解有关期刊的参考文献的著录格式,以免出错。许多作者投递的稿件书写格式包括参考文献的著录格式与杂志所要求的不同。坦率地讲,编辑和审稿专家也是人,工作中多少也有感情因素。如果拿到手中的是一篇书写格式不合要求的文章,别的暂且不论,就书写格式不规范这一条,就足以给编辑留下不好的印象,甚至让编辑做出退稿的决定。就算最后没有被退稿,此类稿件较书写格式规范的稿件被录用的可能性大大降低。

    4.引用新颖的论文文献

    引用文献是否新颖,在某种程度上体现了论文的先进性。太过陈旧的文献虽然也能论证自己的论点,但是却因为过于陈旧或被引用次数过多而导致文献本身的权威价值降低。因此,撰写科研论文应尽可能引用最新的文献。当然,在本领域有开创性贡献的旧文献也可适当引用,但绝对不宜过多。文献计量学研究结果表明,多数期利普赖斯指数(即期刊引用5年以内的参考文献数量占引用参考文献总数的百分比)在50%以上。因此作者撰写论文时要尽可能多地引用5年以内的文献,且至少不低于50%。这样才能符合一篇学术论文需要具备的新颖的特点。

    5.引用高质量的论文文献

    引用参考文献质量的高低在一定程度上反映了该论文学术水平的高低,从总体上体现了该论文的科学性、实用性和先进性。这就要求作者平时注意阅读、积累权威期刊的文献和权威专家的文献。高质量的文献就好比铁一般的事实,在论证自己的论点时,强而有力的论据便是支撑自己论文的最有效支点,所以我们在文献引用上要使用高质量文献,同时高质量的文献也是体现论文作者全面的阅读量和对该领域研究的了解程度。

    6.引用全面的论文文献

    引用参考文献一定要全面,尽可能全面地引用国内外相关研究成果。在大量引用国外文献的同时,适当引用这些专家学者的文献,对论文顺利通过审稿是十分有利的。除此之外,对文献的引用在内容上也要求具有全面性,只针对每个地方,或者某些特定条件下所撰写的论文文献,则需要根据自身论文的内容范围做出适当的选用。

    7.合理把控参考文献的数量

    参考文献的数量并不是越多越好,应该和论文的信息量成正相关。比如,一篇研究论文只有很少的研究结果,却在讨论中引用大量文献来进行解释和假设,这样不太好。不过,有些杂志对文献数量有限制。最好奉行“少而精”的原则。

    8.选择参考文献的档次

    一般而言,SCI发表的英文结果应该都是值得信赖的,都可以被引用。而事实上,参考文献的档次在某种程度上决定了咱们所写的文章的档次。我们的引文大部分都是2-5分左右的文章,那么我们的文章差不多也可以发2-5分左右。当然很多审稿人并不注意这个问题,因为没人会一一核实你所引用的文献的影响因子。但在这个问题上也不能心存侥幸,尤其是发影响因子高的文章,要特别注意引用高质量和高档次的文献。

    展开全文
  • 静态资源引用 在 Taro 中可以像使用Webpack那样自由地引用静态资源,而且不需要安装任何 Loaders。 引用样式文件 可以直接通过 ES6 的import语法来引用样式文件 例如引用 CSS 文件 import './css/path/name....
  • 以下代码是在学习过程中,网上查到的。如果有版权问题,请联系删帖!!! 在网上找到了两种方法 一种是直接使用 .Net的类,测试后发现比如输入数字 8, 会自动变成 0.0.0.8 而这种格式并非我们所要的。 所有直接使用...
  • C++引用及常引用

    千次阅读 多人点赞 2016-08-18 20:44:58
    一、变量的引用引用:就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名;  例:char ch;  char &rp=ch;  1)引用仅是...
  • 浅析C++中的引用(&)

    千次阅读 2015-09-10 13:53:19
    引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清...
  • vb6.0 office excel 和wps共存,创建正确的excel对象以便操作excel表格 “类 Workbook 的 SaveAs 方法无效”错误
  • VC++引用指南

    千次阅读 2009-01-13 17:46:00
    引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清...
  • Android Studio下引用jar包、依赖其他module和使用so的主要操作
  • 引用形参

    千次阅读 2013-12-04 17:01:45
    引用形参 *是去引用运算符,或称之为间接引用运算符 首先看一下 普通形参 int add1(int a) { return a+1; } void main() { int num = 10; int num2; num2 = add1(num); }   在这种情况下...
  • 指针与引用

    千次阅读 2015-07-13 00:06:31
    一、指针  指针指向一块内存,它的内容是所指内存的地址。所以说,指针就是地址。 1、指针的声明及初始化  看下例子 int ival = 1024;int *pi = 0; 正确,0表示空地址 ... 正确,pil地址里的数字是
  • 引用的作用

    千次阅读 2010-05-01 10:32:00
    C++中的引用【导读】介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用...
  • c++中为什么要用引用

    千次阅读 2017-09-23 17:31:13
    我的总结:引用的好处之一就是在函数调用时在内存中不会生成副本。引用总结(1)在引用的使用中,单纯给某个变量取个别名是毫无意义的,引用的目的主要用于在函数参数传递中,解决大块数据或对象的传递效率和空间不...
  • 字符串的引用

    千次阅读 2019-05-08 23:02:54
    引用一个字符串,可以用以下两种方法。 (1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中的一个字符,也可以通过数组名和格式声明“%s”输出该字符串。 例:定义一个字符数组在其中存放字符串...
  • C语言中引用的用法

    万次阅读 多人点赞 2017-06-29 10:08:35
    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。  引用的声明方法:类型标识符 &引用名=目标变量名;  【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名  说明...
  • C++引用与复制构造函数

    千次阅读 2017-02-07 20:18:38
    引用 ◆ 1、什么是引用引用又称别名(alias),是一种非常特殊的数据类型。...引用定义的格式为:  类型 &引用变量名=已定义过的变量名; 例如:  double number ;  double &newnum=num
  • 使用 EndNote 9 引用参考文献

    千次阅读 2020-06-15 21:23:33
    EndNote 9 是用于书写科技论文时的一把利器,现在我将这个EndNote使用方法分享给大家,希望能够提高各位学习EndNote的效率,如果有描述和阐述不正确的地方请各位批评指正! 基本使用规则介绍 【1】表示导入文献按钮...
  • .xml外部实体引用

    千次阅读 2017-06-01 10:30:25
    一、语法XML声明: XML声明放在XML文档的第一行 XML声明由以下几个部分组成: version:文档符合xml1.0规范,我们学习1.0 encoding:文档字符编码,比如“GB2312”或者“UTF-8” standalone:文档定义是否独立使用“no...
  • C++ 引用的作用和用法

    千次阅读 2012-11-29 20:12:43
    引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。 引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的...
  • 一、引用简介  引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。  引用的声明方法:类型标识符 &引用名=目标变量名;  【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,...
  • C++中的&引用符号全解

    千次阅读 2016-08-15 11:29:19
    引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清...
  • C++编程之引用的详细总结

    万次阅读 多人点赞 2020-03-07 15:07:12
    目录1、引用1.1、引用概述1.2、引用类型2、函数传参 1、引用 1.1、引用概述      对于C语言使用者来讲,看到c++中出现&符号,可能会比较纳闷。因为在C语言中这个符号是取地址符,取地址符...
  • XML的实体引用

    千次阅读 2016-07-07 10:09:59
    XML也有一种逻辑结构,在逻辑上,文档的组成成部分包括声明,元素,注释,字符引用和处理指令。 以下是代码片段: 这个就是XML的声明,声明也是处理指令,在XML中,所有的处理指令都以结束。 2,根元素 每个...
  • 【Java8】 方法引用 讲解

    万次阅读 2019-11-21 19:24:06
    一、概述 在学习 lambda 表达式之后,我们通常使用 lambda 表达式来创建匿名方法。然而,有时候我们仅仅是调用了一个已...在Java8中,我们可以直接通过方法引用来简写lambda 表达式中已经存在的方法。 Arrays.so...
  • 空指针间接引用发生在应用程序间接引用其预期有效但实际为空的指针时,通常会导致崩溃或退出。 扩展描述 空指针间接引用可能在多个弱点发生后发生,如竞争条件和简单程序省略等。 相关视图 与“研究层面”视图...
  • latex参考文献引用【bibtex】

    千次阅读 2018-12-29 09:46:13
    以IEEE模板为例,经过latex编译之后,会有以下文件:   references.bib是我自己建立的文件,里面会存放需要引用的参考文献。格式如下图所示: 这个我们从google学术或者百度学术上去找自己要引用的文章,...
  • C++ 引用对象成员的三种方式

    千次阅读 2014-12-11 10:13:49
    3.通过对象的引用变量访问对象中的成员。 通过对象名和成员运算符访问对象中的成员 例如在程序中可以写出以下语句:  stud1.num=1001;  //假设num已定义为公用的整型数据成员 表示将整数1001赋给对象stud
  • 4.常量与引用 4.1 const的最初动机 4.2 const与指针 4.3 const与函数 4.4 const与类 4.5 引用(&amp;) 4.6 复制构造函数 3.函数重载 函数名可以看做是一个操作的名字。通过这些名字,可以写出易于人们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,418
精华内容 68,967
关键字:

以下引用格式正确的是