数组b长度会因为a的长度比它大而变长吗?

#include
#include
#include
using namespace std;
int main(void)
{
int a[16];
int b[10];
for(int i=0;i<16;i++){
cin>>a[i];
}
memcpy(b,a,sizeof a);
for(int i=0;i<16;i++){
cout<<b[i]<<" ";
}
cout<<endl<<b[15];
return 0;

}
输入数字
1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16
输出结果
1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16
16

貌似不会,你给内存多大他就是多大

img

img

在C语言中,数组的大小一旦声明后,就是不可更改的,所以,数组b的长度就是10,数组a的长度就是16,永远不会改变。

当然,可以使用动态申请的方式来改变数组大小。参考如下:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int *a; //这里声明的是指针
    a = (int *)malloc(16*sizeof(int)); //申请16个int空间
    //调整a的长度
    a = realloc(a,20*sizeof(int)); //将a的空间大小扩展到20个int大小
    free(a); //释放a申请的空间
    return 0;
}