Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Char数组返回的数据是预期的四倍_C++_Arrays - Fatal编程技术网

C++ Char数组返回的数据是预期的四倍

C++ Char数组返回的数据是预期的四倍,c++,arrays,C++,Arrays,在我继续之前,以下是代码: 包括 使用名称空间std; int main{ 字符数组[]={a',b',c'}; coutcout接受这个字符数组,并将其作为以null结尾的字符串进行寻址 由于此数组中的终止字符不是空字符,即char0,因此它会尝试打印,直到遇到空字符为止 此时,它会尝试读取已分配的数组之外的内存,从技术上讲,任何事情都可能发生 例如,每次调用函数时,该内存中可能有不同的数据,或者内存访问操作甚至可能是非法的,这取决于调用函数时分配数组的地址 因此,程序的行为通常被认为是未定义

在我继续之前,以下是代码:

包括 使用名称空间std; int main{ 字符数组[]={a',b',c'}; coutcout接受这个字符数组,并将其作为以null结尾的字符串进行寻址

由于此数组中的终止字符不是空字符,即char0,因此它会尝试打印,直到遇到空字符为止

此时,它会尝试读取已分配的数组之外的内存,从技术上讲,任何事情都可能发生

例如,每次调用函数时,该内存中可能有不同的数据,或者内存访问操作甚至可能是非法的,这取决于调用函数时分配数组的地址


因此,程序的行为通常被认为是未定义的或不确定的。

当以字符串形式打印时,应以null终止字符数组。我知道null字节是如何工作的,但这并不能改变只有三个字节的事实。如果编译器如此关心我在创建变量时声明的大小,为什么它不使用jUSTSTOP读入一旦到达软缓冲区的末尾,试试这个:CUT@阿基拉,虽然数组中已知的大小是真的,但是当您通过ToOutt时,数组会衰减到一个字符指针,然后它会被期望是一个空终止的C++风格字符串。d当你这样做的时候,可能会发生奇怪的事情。请注意,未定义的情况比不确定的情况更严重。例如,有些程序可以随机生成不同的整数序列,而没有未定义的情况。@M.M:我相信在有限状态机上,没有真正的随机,也就是说,甚至兰德的行为都可以预测d如果一个人知道初始种子,更一般地说,当一个人知道机器上每个晶体管的当前状态时。所以我认为这里的不确定性实际上相当于大多数人通常所说的未定义。未定义是一个由标准定义的术语,意思是行为根本不由标准定义。真的r可以通过调用硬件真随机性生成器来实现安顿,当然,C++中可以这样做,假设生成器可以用于用户代码。call@goodvibration有限状态机不是图灵完成的,所以一般不能运行C++。你是指图灵机吗?@ M:嗯,我想它是更多的T。这是一个理论上的论点,但我在前面的评论中的观点仍然存在——如果硬件有有限的状态数,那么随机发生器的输出是可以预测的,因此它的行为是确定性的。
abcXXXXXXXXX