第三章 数据

本章是非常重要的,在特定范围内使用、链接属性、存储类型。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. 【Hibernate步步为营】--双向关联一对一映射具体解释(一)

    一对一的映射在对象模型中是常常见到的,为了将对象模型转换为关系模型就必须在映射文件里进行配置,上篇文章讨论了一对一映射的单向关联的情况,重点是<one-to-one>标签的使用,须要在映射 ...

  2. gradle(转)

    一.声明dependency     在build.gradle文件编辑以下代码: apply plugin: 'java' repositories { mavenCentral() } depen ...

  3. Linux高性能server规划——多进程编程

    多进程编程 多进程编程包含例如以下内容: 复制进程影映像的fork系统调用和替换进程映像的exec系列系统调用. 僵尸进程以及怎样避免僵尸进程 进程间通信(Inter-Process Communic ...

  4. effective c++ 条款5 c++ 默默实现的函数

    当写一个空类c++ 会为我们自动提供四个函数 1 默认构造函数 2 默认析构函数 3 拷贝构造函数 4 默认赋值运算符

  5. 传智播客成都校园php纪律指控

    继传智播客成都校区php第一期班圆满开班,说明php的火爆一点儿也不亚于java! 经传智播客商讨决定,传智播客成都校区php学科收费标准例如以下: 採用下面不论什么一种方式都能够享受优惠价: 一.自 ...

  6. [LeetCode160]Intersection of Two Linked Lists

    题目: Write a program to find the node at which the intersection of two singly linked lists begins.   ...

  7. C#中禁止程序多开

    原文:C#中禁止程序多开 方法一.使用Mutex bool createdNew; //返回是否赋予了使用线程的互斥体初始所属权            System.Threading.Mutex i ...

  8. 利用Eclipse中的Maven构建Web项目(三)

    利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...

  9. cocos2dx 3.0 学习笔记 引用cocostudio库 的环境配置

    cocostudio创建UI并应用时须要引用cocostudio库,须要额外的环境配置: 之前已经搭配好了基础的开发环境,包含 1) JDK 2) Python 2.7 3) ant 4) visua ...

  10. IIS安装asp组件:JMail 邮件收发组件

    JMail简介 jmail是一种服务器端的邮件发送组件,和个人用的客户端邮件软件不一样的.jmail是在服务器上给程序用来发邮件用的,除了软件编程人员,其他人一般平常用不上. jmail是一个第三方邮 ...