C ++数组上没有打印任何内容

时间:2012-07-02 17:51:40

标签: c++ visual-studio-2010

我是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;
}

3 个答案:

答案 0 :(得分:7)

代码看起来很好,除非它应该是

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

不是+

答案 1 :(得分:0)

问题在于myarray[3] +"\n"

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

为了得到(我认为)你要求做的事,

  

cout&lt;&lt; myarray [3]&lt;&lt; '\ n'

答案 2 :(得分:-1)

虽然已经给出了解决方案:

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

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

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

其中printf搜索标志并将其他参数作为字符串加载并在一个命令中输出。