Stroustrup,第5章,导航数组 [英] Stroustrup, chapter 5, navigating arrays
问题描述
我已经创建了一个打印数组元素的程序。
程序编译没有蚂蚁麻烦但是我得到了一些
奇怪的输出:
-------------------程序---------------------- ----
#include< iostream>
void print_array(char ar [])
{
std :: cout<< 打印元素:;
for(char * p = ar; * p!= 0; p ++)
std :: cout<< * p<< " \t";
std :: cout<< " \ n";
}
int main(){
char v1 [] = {''1'',' '2'',''3''};
char v2 [] = {'''',''b'',''c''};
print_array(v1);
print_array(v2);
}
---- ---------------输出---------------------------------- -
[arch @ voodo cpp] $ ./a.out
打印元素:1 2 3? ? ?
? H ? ? ? ? G ? ??
? ? ? @? ? H?
? ? ? G ? ? ?
打印元素:a b c 1 2 3
? ? ? ? H ? ? ? ?G
? ? ? ? ? ? @?
? H ? ? ? ? G ?? ?
[arch @ voodo cpp] $
i have created a programme that prints the elements of an array.
programme is compiled without ant trouble but i am getting some
strange outputs:
------------------- PROGRAMME --------------------------
#include <iostream>
void print_array(char ar[])
{
std::cout << "printing elements:";
for(char* p=ar; *p !=0; p++)
std::cout << *p << "\t";
std::cout << "\n";
}
int main() {
char v1[] = { ''1'', ''2'', ''3'' };
char v2[] = { ''a'', ''b'', ''c''};
print_array(v1);
print_array(v2);
}
------------------- OUTPUT -----------------------------------
[arch@voodo cpp]$ ./a.out
printing elements:1 2 3 ? ? ?
? H ? ? ? ? G ? ??
? ? ? @ ? H ?
? ? ? G ? ?
printing elements:a b c 1 2 3
? ? ? ? H ? ? ? ?G
? ? ? ? ? ? @ ?
H ? ? ? ? G ??
[arch@voodo cpp]$
推荐答案
./ a.out
打印元素:1 2 3? ? ?
? H ? ? ? ? G ? ??
? ? ? @? ? H?
? ? ? G ? ? ?
打印元素:a b c 1 2 3
? ? ? ? H ? ? ? ?G
? ? ? ? ? ? @?
? H ? ? ? ? G ?? ?
[arch @ voodo cpp]
./a.out
printing elements:1 2 3 ? ? ?
? H ? ? ? ? G ? ??
? ? ? @ ? H ?
? ? ? G ? ?
printing elements:a b c 1 2 3
? ? ? ? H ? ? ? ?G
? ? ? ? ? ? @ ?
H ? ? ? ? G ??
[arch@voodo cpp]
事情是什么时候你初始化一个数组,然后它是
不会自动Null终止。我的意思是它有3个元素。
你需要添加第4个元素以确保只打印3个元素
out。见下文。
The thing is that when you initialise an array that way, then it is
not automatically Null terminated. I mean it has exacly 3 elements.
You need add a 4th element to ensure only 3 elements will be printed
out. See below.
------------------- PROGRAM ----------- ---------------
#include< iostream>
void print_array(char ar [])
{
std :: cout<< 打印元素:;
for(char * p = ar; * p!= 0; p ++)
std :: cout<< * p<< " \t";
std :: cout<< " \ n";
}
int main(){
------------------- PROGRAMME --------------------------
#include <iostream>
void print_array(char ar[])
{
std::cout << "printing elements:";
for(char* p=ar; *p !=0; p++)
std::cout << *p << "\t";
std::cout << "\n";
}
int main() {
char v1 [] = {''1'',''2'',''3'',''\ 0''};
char v2 [] = { ''a'',''b'','c'',''\ 0''};
char v1[] = { ''1'', ''2'', ''3'', ''\0'' };
char v2[] = { ''a'', ''b'', ''c'', ''\0'' };
>
print_array(v1);
print_array(v2);
}
-------------------输出----------- ------------------------
[arch @ voodo cpp]
>
print_array(v1);
print_array(v2);
}
------------------- OUTPUT -----------------------------------
[arch@voodo cpp]
这篇关于Stroustrup,第5章,导航数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!