我是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;
}
答案 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搜索标志并将其他参数作为字符串加载并在一个命令中输出。