设为首页 加入收藏

TOP

C++从零开始(五)――何谓指针(二)
2014-11-24 13:20:08 】 浏览:4633
Tags:从零 开始 何谓 指针
ar类型进行表示的字符串称为单字节字符串(SingleByte),用这种表示方式记录的文本文件称为是ANSI格式的。
由于char类型可以表示负数,则当从字符串中提取字符时,如果所得元素的数值是负的,则将此元素和下一个char元素联合起来形成一short类型的数字,再按照Unicode编码规则(一种编码规则,等同于前面提过的ASCII码表)来解释这个short类型的数字以得到相应的字符。
而上面的"ABC"返回的就是以多字节格式表示的字符串,因为没有汉字或特殊符号,故好象是用单字节格式表示的,但如果:char b[10] = "AB汉C";,则b[2]为-70,b[5]为0,而不是想象的由于4个字符故b[4]为0,因为“汉”这个字符占用了两个字节。
上面的多字节格式的坏处是每个字符的长度不固定,如果想取字符串中的第3个字符的值,则必须从头开始依次检查每个元素的值而不能是3乘上某个固定长度,降低了字符串的处理速度,且在显示字符串时由于需要比较检查当前字符的值是否小于零而降低效率,故又推出了第三种字符表示格式:宽字节字符串(WideChar),用这种表示方式记录的文本文件称为是Unicode格式的。其与多字节的区别就是不管这个字符是否能够用ASCII表示出来,都用一个short类型的数字来表示,即每个字符的长度固定为2字节,C++对此提供了支持。
short b[10] = L"AB汉C";
在双引号的前面加上“L”(必须是大写的,不能小写)即告诉编译器此双引号内的字符要使用Unicode格式来编码,故上面的b数组就是使用Unicode来记录字符串的。同样,也有:short c = LA;,其中的c为65。
如果上面看得不是很明白,不要紧,在以后举出的例子中将会逐渐了解字符串的使用的。


静态和动态

上面依然没有解决根本问题――C++依旧只能通过变量这个映射元素来访问内存,在访问某块内存前,一定要先建立相应的映射,即定义变量。有什么坏处?让我们先来了解静态和动态是什么意思。
收银员开发票,手动,则每次开发票时,都用已经印好的发票联给客人开发票,发票联上只印了4个格子用以记录商品的名称,当客人一次买的商品超过4种以上时,就必须开两张或多张发票。这里发票联上的格子的数量就被称作静态的,即无论任何时候任何客人买东西,开发票时发票联上都印着4个记录商品名称用的格子。
超市的收银员开发票,将商品名称及数量等输入电脑,然后即时打印出一张发票给客人,则不同的客人,打印出的发票的长度可能不同(有的客人买得多而有的少),此时发票的长度就称为动态的,即不同时间不同客人买东西,开出的发票长度可能不同。
程序无论执行多少遍,在申请内存时总是申请固定大小的内存,则称此内存是静态分配的。前面提出的定义变量时,编译器帮我们从栈上分配的内存就属于静态分配。每次执行程序,根据用户输入的不同而可能申请不同大小的内存时,则称此内存是动态分配的,后面说的从堆上分配就属于动态分配。
很明显,动态比静态的效率高(发票长度的利用率高),但要求更高――需要电脑和打

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇SOA――面向服务的体系架构 下一篇C++从零开始(十)――何谓类

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目