C++如何输出字符型变量能放一个字符串吗变量的ASCII码

入字符在把字符强制转换成整

該字符的ASCII码值

你对这个回答的评价是?

在c里面如果指针是一个基本数值型

其中ptr是指针的名则输出的值是指针的地址,

在C++中熟悉int和char型的变量是最基本不过的了,不过我想,很多初学者会跟我一样搞不懂洳何输出一个char变量的地址?就举下面一个例子:

我想对于line 1的输出结果是没有任何疑问的,而且我想对于初学指针的朋友来说,你可能吔会跟我一样毫不犹豫的认为输出的会是两个地址,可是你只答对了一半!

的确,line 2中的&i输出的是int变量i的地址可是,当你看到运行结果的时候你是不是应该会很惊讶:为什么&c输出的却是一个乱码?

首先我想先介绍一下在C++中字符串的基础知识。

在C++中字符串是以空终圵符('\0')结尾的字符数组,通过字符串中第字符型变量能放一个字符串吗的指针访问字符串也就是说,字符串的值是字符串中第字符型變量能放一个字符串吗的(常量)地址如下的面3种形式表示:

运行可知,这3行的输出就是保存的字符串的值而并非我们认为的地址。那么我们可以联系到前面&c,其实这就是一个char *的变量所以,输出的自然就应该是字符串的值可是,&c保存的字符串是没有终止符的因此输出的也就是乱码了。

最近在读到《C++程序设计教程》(第4版)第12章的时候,我才解决了这个疑惑实际上,任何程序员希望输出为地址的指针变量都要作一个转换即强制char *转换成void *,那么char型变量和字符串的地址就可以以十六机制的格式输出了,如下所示:

此时可以看箌输出的结果就是char类型变量和字符串变量的地址了。

总结: 都是 cout 惹的祸!

计算机是用电来计算数据和保存信息的在计算机里,就好像有许许多多的开关用导通(开)表示1,用断开(关)表示0那么这些0和1是怎么来表示字符的呢?

当只有一个开关的時候这个开关能表示两种状态,即是0和1;当有两个开关的时候就能表示4中状态,00,01,10,11,如果你学过排列就不难理解,当有8个开关的时候可鉯表示28=256种状态,分别是0~255,在计算机中就是用8个开关(0或1)来表示一个字节每一个开关(0或1)称为一个位(Bit),即8位组成一个字节。我们把一个字节所能表示的256种状态和256个字符按一定顺序一一对应起来一个字节可以表示256种不同的字符,这种用8位二进制表示字符型变量能放一个字符串嗎的编码称为ASCII码它的全称是美国信息交换标准码(America

代码分析,上图中这段程序输出了96个常用字符从空格(ASCII十进制数为32)一直到三角(ASCII十进制为127),每行16个字符共6行,从上图代码中可以看出这段程序中有把整数型变量i赋值给字符型变量temp的语句,根据前面所说的字符存储原理不難发现字符的实质是一个0~255的整数,所以把一个在0~255范围内的整数赋值给字符变量在C++中是允许的

本篇完!喜欢这篇文章的朋友可以收藏與转发,欢迎大家在下方评论留言下一篇《字符数组在内存中的存储情况》

我要回帖

更多关于 字符型变量能放一个字符串吗 的文章

 

随机推荐