【发布时间】:2021-03-20 05:52:32
【问题描述】:
为什么第一个选项不起作用? “pointer->malloc”和“type []”是动态预留内存的一部分,有区别吗?
int a[10];
int b[10];
int *aux;
aux=a;
a=b;
b=aux;
int *a=(int*)malloc(10);
int *b=(int*)malloc(10);
int *aux;
aux=a;
a=b;
b=aux;
【问题讨论】:
-
第一个选项不起作用,因为
a和b不是指针,它们有时只是衰减到它们。您不能为这样的数组分配新地址。 -
a和b不是指针,它们是数组。数组不是指针,它们是数组。数组和数组和指针都是指针。数组可以转换为指针,但这并不意味着它们本身就是指针(因此不能像它们一样交换/处理) -
a=b在第一种情况下不能在 C++ 中编译。 -
但我做不到 a=&b[0] 没错,你不能这样做。
-
很多程序员都犯了这个错误,因为他们接受的教育把事情搞混了,告诉他们数组是指针。然后他们毕业,找到工作,发现他们学到的任何特定语言的一半以上是错误的,即使不是非常有趣和危险的错误。