C和指针 (pointers on C)——第三章——数据
第三章 数据
本章是非常重要的,在特定范围内使用、链接属性、存储类型。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)——第三章——数据的更多相关文章
- 《C和指针》读书笔记——第三章 数据
1.typedef:为各种数据类型定义新名字 typedef char *ptr_to_char; ptr_to_char a;//声明a是一个指向字符的指针. 2.链接属性:extern;stat ...
- 《驾驭Core Data》 第三章 数据建模
本文由海水的味道编译整理,请勿转载,请勿用于商业用途. 当前版本号:0.1.2 第三章数据建模 Core Data栈配置好之后,接下来的工作就是设计对象图,在Core Data框架中,对象图被表 ...
- Laxcus大数据管理系统2.0(5)- 第三章 数据存取
第三章 数据存取 当前的很多大数据处理工作,一次计算产生几十个GB.或者几十个TB的数据已是正常现象,驱动数百.数千.甚至上万个计算机节点并行运行也已经不足为奇.但是在数据处理的后面,对于这种在网络间 ...
- C和指针 第三章--数据
简要概述: <C和指针>第三章对数据进行了描述. 其中主要讲解了---变量的三个属性:作用域.链接属性和存储类型. 这三个属性决定了该变量在“什么地方可以使用”以及“该变量的值能够保持多久 ...
- 《Pointers On C》读书笔记(第三章 数据)
1.在C语言中,仅有4种基本数据类型:整型.浮点型.指针和聚合类型(如数组和结构等). 整型家族包括字符.短整型.整型和长整型,它们都分为有符号和无符号两种. 标准规定整型值相互之间大小的规则:长整型 ...
- Java 螺纹第三版 第三章数据同步 读书笔记
多线程间共享数据问题 一.Synchronizedkeyword atomic一词与"原子"无关,它以前被觉得是物质的最小的单元,不能再被拆解成更小的部分. 当 ...
- 《C和指针》读书笔记 第3章-数据
原创文章,转载请注明出处:http://www.cnblogs.com/DayByDay/p/3936488.html
- 【数据分析 R语言实战】学习笔记 第三章 数据预处理 (下)
3.3缺失值处理 R中缺失值以NA表示,判断数据是否存在缺失值的函数有两个,最基本的函数是is.na()它可以应用于向量.数据框等多种对象,返回逻辑值. > attach(data) The f ...
- c语言学习笔记第三章———数据和C
B站有视频演示 本章将会讲解c语言的数据定义和使用,您将会了解int.float.double.char的含义,了解命名的规则,对c语言会有更加深刻的认识. 变量命名: 我们先讲上次视频没讲的变量命名 ...
随机推荐
- 03.Msbuild
MSBuild的深入认识 分类: 专题开发 自动化 2009-01-20 11:56 5711人阅读 评论(1) 收藏 举报 任务引擎脚本工作扩展build 最近在从事自动构造工作的过程中,对MSBu ...
- 【Java基础】异常的简单分类与处理
Java中所有的异常都继承自Throwable类,Throwable类的已知子类有Error和Exception. Error是指系统出现的错误,这种错误出现的时候,我们的程序无能为力,所以不需要进行 ...
- cidaemon.exe过程cpu入住率和关闭cidaemon.exe加工方法
问题叙述性说明: 这个时间机器始终是一个奇怪的问题:cidaemon.exe这个过程需要CUP率98%以上,大大影响了正常使用电脑.多个资源管理器出现cidaemon.exe过程,cpu率最高的一 ...
- Java常见问题3:周期之谜
谜24 byte是有符号的.范围是-128 - 127. 而0x90是int类型. 比較的时候.不相等. 假设想让其相等,须要进行类型转换:(byte & 0xff) 或者 (byte)0x9 ...
- MSSQL连接字符串,你真的清楚吗?
原文:MSSQL连接字符串,你真的清楚吗? 几年前当我第一次面试时,考官发现我是个新手于是他让我写个连接字符串,虽然当时就知道X种连接字符串的写法,但是当时却没能写对一个,工作多年后我仍然不能写一个正 ...
- NET开发者部署React-Native
NET开发者部署React-Native 前情摘要 众所周知,有人说.net可以用Xamrian,呵呵,不习惯收费的好么?搞.Net的人设置一次java的环境变量,可能都觉得实在太麻烦了,可能是因为这 ...
- chrome主页被篡改为360该溶液的导航
昨天,安装游戏后,,发现chrome该主页被篡改为360导航. 进入chrome设置更改主页,再次启动chrome或360导航,后来头发今天chrome快捷方式目标再加上一堆的属性后面360网站导航, ...
- C/S通信模型和相关技术要点
差点儿全部的项目中,都会涉及到client和服务端.而client与server之间的通信又是一个非经常见但又有须要问题的技术问题. 首先,连接方式有长连接和短连接.先看看概念. 长连接短连接仅仅是一 ...
- BZOJ 1901 Dynamic Rankings 树董事长
标题效果:间隔可以改变k少 我的两个天树牌主席... 隔断Count On A Tree 之后我一直认为,随着树的主席的变化是分域林木覆盖率可持久段树. .. 事实上,我是误导... 尼可持久化线段树 ...
- 简单vector达到
得知c++于,看完这本书后,,最近苦于不知道下一步该怎么做了,在寻找STL在各种容器的源代码分析,我想一次又一次地实现它. 之前,很多问题看的时候不知道是怎么回事,意与理解的.这个vector类写得特 ...