内存拷贝函数:
void *memcpy(void *dest,const void *src,size_tn);
#include<string.h>
功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest内存地址的起始位置
分配内存使用new 例如:salary=new int[num];
最后需要释放内存:delete [] salary;
程序为工人工资数组分配内存代码:
源数组为10个元素,输入12个元素进行测试
并将超过10元素的,都赋值为18
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<stdlib.h>
#include<string.h>
int main()
{
int num = 0;
int* salary = NULL;
int farmer[10] = { 2000,3000,5000,1555,6000,9888,4561,2584,7895,6359 };
printf("雇佣工人数量:");
scanf("%d", &num);
//分配内存
salary = new int[num];
//内存拷贝
memcpy(salary, farmer, sizeof(farmer));
for (int i = sizeof(farmer) / sizeof(int); i < num; i++)
{
*(salary + i) = 18;
}
//输出
for (int i = 0; i < num; i++)
{
printf("第%d个工人的工资为%d\n", i + 1, salary[i]);
}
//删除内存
delete[] salary;
system("pause");
return 0;
}
原理图:
在进行内存拷贝函数时,将farmer数组的起始位置开始的40个字节拷贝到salary指针所指的堆区
并且前40个字节按照原来的进行分配,后面均赋值18