【发布时间】:2012-06-24 20:21:37
【问题描述】:
我很困惑为什么 cout 语句没有在函数 find_depth 中打印数组 c_braces_array 的内容;
我要做的就是传递一个数组并打印它的值。
#include <iostream>
int find_depth(char c_braces_array[], int no_of_braces)
{
for(int i=0; i<no_of_braces; i++)
{
std::cout<<"val is:"<<c_braces_array[i]<<"F\n";
}
return 0;
}
int main()
{
char braces[100] = {0};
int ret_val = find_depth(braces, 100);
std::cout<<ret_val;
system ("pause");
return 0;
}
O/P:
...
val 是:F
val 是:F
val 是:F
val 是:F
val 是:F
0按任意键继续。 . .
编辑: 我将数组初始化为在主数组中包含所有 0。所以我期待 0 被打印出来。我不确定 O(如哦!)的事情在哪里出现。有人能解释一下吗?
我期待这个o/p
val 是:0 F
编辑 - 2: 伙计们谢谢。感谢您指出错误。 另外我不明白为什么下面的行只用'a'而不是整个数组初始化大括号[0]。什么是初始化整个数组而不是运行 for 循环的正确方法。
现在我的代码如下所示。
main(){
...
char a_char = 'a';
char braces[100] = {a_char};
}
find_depth(..)
{
...
std::cout<<"val is:"<<c_braces_array_ptr[i]<<"X\n";
}
O/P
内部主要:a
val 是:aX
val 是:X
val 是:X
val 是:X
val 是:X
val 是:X
val 是:X
val 是:X
【问题讨论】:
-
一个字符
0是一个空终止符,用于结束字符串,而不是'0',它的 ASCII 值是48。您也不应该使用system("pause"),因为您无法保证其他人计算机上的pause程序会做什么。 -
是,但是你的数组是空的。
-
由于您已将
braces数组初始化为全 0,它正在打印no_of_braces空字符串。 -
出于好奇,您期望的输出是什么?
标签: c++ visual-studio-2010 cout