2012-07-02 66 views
0

我是C++新手。我通常用C#编程,所以我遇到了数组和循环的麻烦。当我尝试使用一个循环来打印动态数组的内容,它说,损坏的请求的区域......比如我会给它认识到与阵列的内容使用的条件,但不打印的它里面的内容:没有打印出阵列C++

// Array.cpp : Defines the entry point for the console application. 
// 
#include "stdafx.h" 
#include <iostream> 
using namespace std; 
void main() 
{ 
    int size=3; 
    int *p; 
    int myarray[10]; 
    myarray[3]=4; 
    p=new int[size]; 
    p[2]=3; 
    if(myarray[3]==4){ 
     cout << myarray[3] +"/n"; 
     cout << "Why?"; 
    } 
    else 
     cout << "Not equal " << endl; 
    cin.get(); 
    delete [] p; 
} 

回答

7

代码看起来不错,除非它应该是

cout << myarray[3] << "\n"; 

不+

+2

''/ n“'也应该是''\ n”' – sfstewman

+0

和'\ n',除非OP真的很想'/ n'。 – SuperSaiyan

+0

真的,谢谢:) – Blood

0

的问题是,myarray[3] +"\n"

“\ n”代表字符串“\ n”的存储位置。 您正在尝试将4添加到该位置并进行打印。如果您正在访问受保护的内存位置,这应该会给您垃圾数据或硬件异常(导致coredump)。

得到什么(我觉得)你所要求做的,

COUT < < myArray的[3] < < '\ n'

-1

虽然解决方案已经给出:

cout << myarray[3] << "\n" 

要得到的一点是,myarray [3]是一个整数,而“\ n”是一个字符串,唯一的方法是“添加“它们作为字符串一起首先将整数变成一个字符串。运算符将处理将myarray [3]转换为字符串的工作,没有什么特别的,然后第二个在它之后泵出新的一行。我个人比较喜欢这样的代码,并发现它更灵活,但它可能是更多的,你在这个阶段学习的在寻找:

printf("%i\n", myarray[3]); 

其中printf搜索旗帜和负载在其他参数字符串和以一个命令输出它。

+0

在C++中,最好使用<<而不是printf。此链接解释了原因 - http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.1 – Chip

+0

有趣。目前我仍然对printf感觉更舒适,但该链接提供了一些我没有想过的观点。我打算说明的是,myarray和“\ n”明显不同,它们“隐藏(有时候会更好)。 – mwilliams

+0

与他们合作,谢谢 –