【编程范式】连续数据的前面部分后移的实现

来源:互联网 发布:闻战网络歌手 编辑:程序博客网 时间:2024/04/28 20:35


学习编程范式到第七节课了,直接上代码:


// rotate.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include "memory.h"#include "string.h"int main(int argc, char* argv[]){printf("Hello World!\n");return 0;}/************************************************************************//* 连续数据的前面部分后移的实现                                                                     *//************************************************************************/void rotate(void * front,void * middle,void * end){int beforeSize = (char *)middle - (char *)front;int endSize = (char*)end - (char *)middle;char  buff[beforeSize];memcpy(buff,front,beforeSize);memmove(front,middle,endSize);memcpy((char *)end-beforeSize,buff,beforeSize);}

编译的时候会发现错误,错误如下:

E:\vc\rotate\rotate.cpp(19) : error C2057: expected constant expressionE:\vc\rotate\rotate.cpp(19) : error C2466: cannot allocate an array of constant size 0E:\vc\rotate\rotate.cpp(19) : error C2133: 'buff' : unknown size

错误解析:


buff[beforeSize]
是错误的,因为这种预定义的数组是不能用变量当作数组大小的。这也会出编译错误。
如果想在运行时决定数组的大小,请用new操作符分配数组,或者malloc之类的堆分配函数。

例如:

char* buff = new char[beforeSize];


原创粉丝点击