C++ 为什么我可以将动态_数组指定为静态_数组,而不是相反?

C++ 为什么我可以将动态_数组指定为静态_数组,而不是相反?,c++,C++,动态数组=静态数组可以正常运行,但当我将静态数组=运行到动态数组时,我会得到“错误:将'int*'赋值到'int[5]中的不兼容类型” 提前谢谢 #include <iostream> using namespace std; int main() { int static_Array[5]; int *dynamic_Array = new int [5]; int i; for(i = 0; i < 5; i++) { static_Array[i] =

动态数组=静态数组可以正常运行,但当我将静态数组=运行到动态数组时,我会得到“错误:将'int*'赋值到'int[5]中的不兼容类型”

提前谢谢

#include <iostream>

using namespace std;

int main()
{

int static_Array[5];
int *dynamic_Array = new int [5];

int i;

for(i = 0; i < 5; i++)
{
    static_Array[i] = i;
    dynamic_Array[i] = i;

}

for (i = 0; i < 5; i++)
{
    cout << "static_Array[" << i << "] =  " << static_Array[i] << endl;
    cout << "dynamic_Array["<< i <<"] = " << dynamic_Array[i] << endl;
}

cout << endl << endl << endl;

static_Array = dynamic_Array;

for ( i = 0; i < 5; i++)
{
    cout << "static_Array["<<i<<"] = "<<static_Array[i] << endl;
    cout << "dynamic_array["<<i<<"] = "<<dynamic_Array[i] << endl;
}

return 0;
}
#包括
使用名称空间std;
int main()
{
int静态_数组[5];
int*动态数组=新int[5];
int i;
对于(i=0;i<5;i++)
{
静态_数组[i]=i;
动态_数组[i]=i;
}
对于(i=0;i<5;i++)
{

C++中的CUT

数组不能被赋值,它们只能用一组定义良好的表达式初始化,例如初始化列表。 因此,以下陈述不起作用,因为它们是作业:

但是下面的语句是有效的,因为它是在定义变量时进行的初始化;以后不能重复(如果是非法赋值的话):

当您谈到“dynamic_Array”时,实际上是指指向整数的指针,它不是数组。它只是指向整数,或指向整数序列的第一个,但它本身不是数组。您可以指定指针值,但请注意,这不会“复制”任何数组内容,它只是将指针设置为整数:

int static_Array[5] = { 1,2,3,4,5 };
int *dynamic_Array = new int [5];
dynamic_Array = static_Array;  // OK (apart from leaking memory): lets dynamic_Array point to the first value of static_Array; No copy!

static_Array[0] = 10;
cout << dymanic_Array[0]; // will print 10.
int静态数组[5]={1,2,3,4,5};
int*动态数组=新int[5];
dynamic_Array=static_Array;//确定(内存泄漏除外):让dynamic_Array指向static_Array的第一个值;不复制!
静态_数组[0]=10;

我能用“动态数组”来猜吗您指的是指针。指针不是数组,但是数组可以隐式转换为兼容类型的指针。指针
int*
可以指向任意大小数组的开头。您不需要知道第一个元素的大小。但是,您不能确定给定的指针指向特定大小数组的开头。请展示一些代码,说明您对动态/静态数组的含义以及您所做的初始化/赋值;然后我们可以更好地对此进行评论。@StephanLechner我已经在帖子中包含了这些代码。您正在泄漏内存。
int static_Array[5] = { 1,2,3,4,5 };
int static_Array[5] = { 1,2,3,4,5 };
int *dynamic_Array = new int [5];
dynamic_Array = static_Array;  // OK (apart from leaking memory): lets dynamic_Array point to the first value of static_Array; No copy!

static_Array[0] = 10;
cout << dymanic_Array[0]; // will print 10.