摘要: 当写下这个题目的时候,笔者心里其实非常犯难。因为从本质上来说,本章想阐述的内容与题目所宣示的概念,其实是不一样的。在编程中,我们常常要处理一段长度未知的数据,而且,运行过程中长度可能会发生变化,现行的C/C++标准没有提供在栈段和数据段内存中的实现,只提供堆中的实现,例如可以象下面代码那样在堆中分配... 阅读全文
posted @ 2015-05-21 09:48 于为 阅读(195) 评论(0) 推荐(0) 编辑
摘要: C90及C++的数组对象定义是静态联编的,在编译期就必须给定对象的完整信息。但在程序设计过程中,我们常常遇到需要根据上下文环境来定义数组的情况,在运行期才能确知数组的长度。对于这种情况,C90及C++没有什么很好的办法去解决(STL的方法除外),只能在堆中创建一个内存映像与需求数组一样的替代品,这种... 阅读全文
posted @ 2015-05-21 09:47 于为 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述一个完整的对象。6.2.5Typesincomplete types(types that describe objects but lack informat... 阅读全文
posted @ 2015-05-21 09:46 于为 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 首先看看如下一个声明:int* ( *( *fun )( int* ) )[10];这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明语法之前,不学习一定的规则,想理解好这类复杂声明是比较困难的。C/C++所有复杂的声明结构,都是由各种声明嵌套构成的。如何解读复杂指针... 阅读全文
posted @ 2015-05-21 09:45 于为 阅读(284) 评论(0) 推荐(0) 编辑
摘要: const一词在字面上来源于常量constant,const对象在C/C++中是有不同解析的,如第二章所述,在C中常量表达式必须是编译期,运行期的不是常量表达式,因此C中的const不是常量表达式;但在C++中,由于去掉了编译期的限定,因此是常量表达式。对于一个指向const对象的指针pointer... 阅读全文
posted @ 2015-05-21 09:44 于为 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 字符串字面量(string literal)是一段双引号括起来的多字节字符序列,C/C++将其实现为具有静态存储连续性的字符数组。初学者(包括不少书籍)常将其称为字符串常量,但这说法只在C++成立,C中不成立。C中的常量只包括下列四种:6.4.4ConstantsSyntaxconstant:int... 阅读全文
posted @ 2015-05-21 09:43 于为 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 下标运算符[]一直被作为数组的专有运算符来介绍,经过长年的应用,人们也早已对这个用法习以为常,视为跟每天的午餐一样稀松平常的事情。当你很遐意地写下a[0]表达式的时候,如果抽空回过头来看看标准中关于下标运算符的条款,你很可能会大吃一惊:6.5.2.1 Array subscriptingConstr... 阅读全文
posted @ 2015-05-21 09:42 于为 阅读(248) 评论(0) 推荐(0) 编辑
摘要: C/C++的数组不同于VB等语言的数组,是有层次的,这个层次指的不是维度,而是象俄罗斯有名的套娃一样,一维套一维,亦即数组的嵌套,数组的元素也是数组,VB等语言的数组与之相比更像一个平面。数组嵌套这个现象从其它语言的角度来看有点奇特,但其实原因也很简单。C/C++的对象模型并不视数组为某种数值的简单... 阅读全文
posted @ 2015-05-21 09:41 于为 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 数组名是一个指针常量这种观点来源于数组名在表达式计算中与指针的结果等效性。例如下面的代码:int a[10], *p = a, *q;q = a + 1;q = p + 1;在效果上看,a + 1与p + 1是相同的,这很容易给人一种a就是p的假象,但,这仅仅是假象。鉴于指针常量包含了指针和常量两类... 阅读全文
posted @ 2015-05-21 09:40 于为 阅读(1258) 评论(0) 推荐(0) 编辑
摘要: 数组与指针生来就是双胞胎,多数人就是从数组的学习开始指针的旅程的。在学习的过程中,很自然就会经常听到或见到关于数组与指针的各种各样的看法,下面我节选一些在各种论坛和文章里经常见到的文字:“一维数组是一级指针”“二维数组是二级指针”“数组名是一个常量指针”“数组名是一个指针常量”.............. 阅读全文
posted @ 2015-05-21 09:39 于为 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 此文是笔者2005年所作《再再论指针》的修订版,与前文相比,本文主要的不同点有如下几点:一、引用C/C++标准的条款去阐述原理。C与C++标准共有四个已发行的正式版本,分别是C89/C90、C99、C++98和C++2003,为了避免重复的条款引用,在文字或语义相同的情况下,笔者只引用C99的条款,... 阅读全文
posted @ 2015-05-21 09:38 于为 阅读(218) 评论(0) 推荐(0) 编辑
摘要: ################################# ## 基本知识 ## #################################当然我们一切都是从最简单的内建类型开始,最后我会做一些推广。先看一下基本的形式,我们从这里起步!Cpp代码--------------指针---... 阅读全文
posted @ 2015-05-21 09:00 于为 阅读(575) 评论(0) 推荐(0) 编辑