第三章 数据

本章是非常重要的,在特定范围内使用、链接属性、存储类型。const、extern和statickeyword使用。几乎所有的公司是C++在采访的第一个问题。

总结:

具有external链接属性(包含external、internal、None)的实体在其它语言的术语里称为全局实体(global),全部cpp里的函数都能够訪问它。

仅仅要声明的时候在函数体或代码块外部(包含main函数)。默认的链接属性都是external。

假设声明的在代码块内部,说明它引用的是一个全局变量。

具有external链接属性的实体总是具有静态存储类型(auto,static)。静态存储类型的数据在程序開始前就会创建,并在程序整个执行过程中始终存在。局部变量相反,在函数执行时才干创建。

自己主动存储的原因:1、降低内存总占有量。

2、在堆栈上分配能够有效地解决递归问题。

表 作用域、链接属性、存储类型总结

变量类型

声明位置

堆栈中?

作用域

声明Static?

声明external?

全局

代码块外

声明到文档结尾

限制在本文档内訪问

默觉得external

局部

代码块起始处

整个代码块

静态存储

变为静态存储

形參

函数头

整个函数

不同意存在

不同意

警告:

1、在声明指针变量时候採用easy误导的写法。

Int *a, *b, *c;//good

Int * a,b,c//仅仅有a是指向int的指针

2、误解指针声明中初始化的含义。

Char*message = “hello world!“//事实上赋值给了message,而不是*message

相当于:

Char *message;

Message =“hello world!”

3、不要依赖隐式声明,显式声明更清楚的表达程序的意图。

枚举类型最好显式得定义一个整型的值,默认第一个字符的整型值为0,后面的值比前面的符号名的值大1。以此类推

Enum week{Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday};//Monday=0

Enum week{Monday= 1, Tuesday = 2…};

4、在定义类型的新名字时,使用typedef而不是#define。

优势显而易见,当#define来创建新的类型名时,后者无法正确地处理指针类型。

#defined_ptr_to_char char *

d_ptr_to_chara, b;

就像int* a, b;一样,正确声明了a,可是b却被声明成了一个字符。

5、使用const声明能够避免变量发生变化。

Int const  *ptr; //声明一个指向整型常量的指针

Int *const  ptr;//声明一个指向整型的指针常量

Int const *const ptr; //声明一个指向整型常量的指针常量

6、使用名字常量而不是字面值常量

如:#define MAX_ELEMENT 50

Intconst MAX_ELEMENT = 50;

前者是名字常量能够定义数组长度。而后者属于字面值常量,不能定义数组长度。

7、不要在嵌套的代码块之间使用同样的变量名。

8、除了实体的详细定义位置之外,在它的其它声明位置都使用externkeyword。

问题15

假定函数a声明了一个automatic的变量x,你能够在其它的function内訪问x,仅仅要你使用了以下这种声明。

extern intx;

对还是错?假设x被声明为static,对还是错?

答:都错。变量仅仅能在自己的作用域訪问。不能在其它作用域訪问,x的作用域就是他的a函数。

Static仅只有改变了它的存储类型。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

C和指针 (pointers on C)——第三章——数据的更多相关文章

  1. 《C和指针》读书笔记——第三章 数据

    1.typedef:为各种数据类型定义新名字 typedef char  *ptr_to_char; ptr_to_char a;//声明a是一个指向字符的指针. 2.链接属性:extern;stat ...

  2. 《驾驭Core Data》 第三章 数据建模

    本文由海水的味道编译整理,请勿转载,请勿用于商业用途.    当前版本号:0.1.2 第三章数据建模 Core Data栈配置好之后,接下来的工作就是设计对象图,在Core Data框架中,对象图被表 ...

  3. Laxcus大数据管理系统2.0(5)- 第三章 数据存取

    第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...

  4. C和指针 第三章--数据

    简要概述: <C和指针>第三章对数据进行了描述. 其中主要讲解了---变量的三个属性:作用域.链接属性和存储类型. 这三个属性决定了该变量在“什么地方可以使用”以及“该变量的值能够保持多久 ...

  5. 《Pointers On C》读书笔记(第三章 数据)

    1.在C语言中,仅有4种基本数据类型:整型.浮点型.指针和聚合类型(如数组和结构等). 整型家族包括字符.短整型.整型和长整型,它们都分为有符号和无符号两种. 标准规定整型值相互之间大小的规则:长整型 ...

  6. Java 螺纹第三版 第三章数据同步 读书笔记

    多线程间共享数据问题 一.Synchronizedkeyword      atomic一词与"原子"无关,它以前被觉得是物质的最小的单元,不能再被拆解成更小的部分.      当 ...

  7. 《C和指针》读书笔记 第3章-数据

    原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936488.html

  8. 【数据分析 R语言实战】学习笔记 第三章 数据预处理 (下)

    3.3缺失值处理 R中缺失值以NA表示,判断数据是否存在缺失值的函数有两个,最基本的函数是is.na()它可以应用于向量.数据框等多种对象,返回逻辑值. > attach(data) The f ...

  9. c语言学习笔记第三章———数据和C

    B站有视频演示 本章将会讲解c语言的数据定义和使用,您将会了解int.float.double.char的含义,了解命名的规则,对c语言会有更加深刻的认识. 变量命名: 我们先讲上次视频没讲的变量命名 ...

随机推荐

  1. android学习一些帖子

    关于谷歌和苹果的帖子 http://news.eoe.cn/18576.html android无线调试的帖子: http://baoyz.com/android/2014/06/24/adb-wir ...

  2. MVC Controller向View传值(ViewData与ViewBag)

    近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ...

  3. flex4 一些项目使用的技术

    <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...

  4. Java Web整合开发(附录1) - 安装配置环境

    1. Install JDK http://blog.csdn.net/sonnet123/article/details/9169741 Download JDK http://www.oracle ...

  5. 移动web:图片切换(焦点图)

    在web页面上图片切换(焦点图)效果实在是太常见了,PC端.移动端到处都有它的身影. 上次写了个tab选项卡的效果,在这里延续一下,改成图片切换的效果. 如果不需要自动播放,稍微修改下html标签.和 ...

  6. Windows Phone 8.1 新功能 - 应用栏控件

    2014年4月3日的微软Build 2014 大会上.Windows Phone 8.1 正式公布. 相较于Windows Phone 8.不论从用户还是开发人员的角度,都产生了非常大的变化. 接下来 ...

  7. Maven使用-利用Maven引入相关包(Struts2)

    根据上一篇的项目搭建,接下来引入需要使用Struts2相关包 1,如何利用maven往项目中引入包? maven就像一个导包助手一样,让它知道去哪里拿什么,他就会自动完成需要的包的搬运工作. (1), ...

  8. HDU 2012 素性

    素性 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submiss ...

  9. Apple Watch 1.0 开发介绍 1.3 简介 WatchKit App 架构

    WatchKit app和WatchKit extension一起实现了app的界面.当用户在Apple Watch中操作时,WatchKit app从storyboards中选择合适的场景.比如,如 ...

  10. Red Hat Enterprise Linux Server(RHEL) yum安装软件时This system is not registered with RHN. RHN support will be disabled. 的解决方法(转)

    新安装了redhat6.5.安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription M ...