wlbk.net
当前位置:首页 >> 输出字符数组的数组名为什么不是地址,而是字符串... >>

输出字符数组的数组名为什么不是地址,而是字符串...

cout对char*型有特殊处理,输出char*型时按照C风格字符串输出。

字符数组是可以用这种方式输出的,因为数组名即代表首地址,数组是一块连续的内存空间,所以能直接输出.如果是其他类型的数组则输出的是一个地址. 因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表...

字符数组是可以用这种方式输出的,因为数组名即代表首地址,数组是一块连续的内存空间,所以能直接输出.如果是其他类型的数组则输出的是一个地址. 因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表...

因为你是按%s 字符串的格式输出的, 它一个接一个挨着输出, 直到遇见'\0'才中止

字符型数组在内存中的储存方式同字符串String类一样,故输出数组名并不是输出数组首地址,而是直接输出数组内容,,,,,, 而整形数组只是整形的集合,所以其数组名仅仅是其首地址,我们必须要用for循环才能完整的输出整个整形数组

假定:char str[]={"12345"} 提供字符数组名称如printf("%s",str),实际上是给出了数组的起始地址,输出语句使用这个地址输出,就是按顺序输出直到遇到结束字符0才停止,结果输出的是字符串,%s要求提供字符串起始地址而不是某一个字符 如果提供...

错了,此处应该是%s

因为数组也是特殊的值类型,跟int a = 1是一样的道理,而且数组其实就是保存的字符,不论你的赋值是对象,还是值类型,数组保存的就是字符,如果是对象,则保存的是对象内存地址,说你当你输出时,看见的就是字符串值。

我认为cout是类ostream的对象,而ostream的定义是typedef basic_ostream ostream,显然ostream类是类模板basic_ostream的一个实例,ostream操作对象都是char类型。那么cout作为类ostream的实例,必然也是以char为默认操作对象。从人的使用习惯来...

可以从scanf函数的函数原型来进行解释。 函数原型:int scanf(char *format, args, ...); 功 能:从标准输入设备按format指定的输入格式将数据输入到args所指向的内存单元 返 回 值:读入并赋给args的数据个数。遇文件结束返回EOF,出错返回0 从...

网站首页 | 网站地图
All rights reserved Powered by www.wlbk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com