#include<stdio.h>
#include<string.h>
void sort() {
/*栈向下增长,所以a在栈中的地址要低于array1*/
int a;
char *p;
/*static变量,放在静态数据区中,而非栈中*/
static int array2[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出
static int array3[]={1,2,3,23,34,45,56,76,234}; //数字任//意给出
p=(char*)&a;
/*从a向上逐字节查找,直到找到array1的开始地址*/
while(p++) {
if(memcmp(p,array2,sizeof(array2))==0) {
/*OK,找到array1的地址之后直接把排好序的数据copy过去*/
memcpy(p,array3,sizeof(array3));
return;
}
}
}
int main() {
int i;
/*利用了栈原理,这里的array1放在内存栈中*/
int array1[]={45,56,76,234,1,34,23,2,3}; //数字任//意给出
/*接下来调用sort函数,sort函数中的临时变量也放在内存栈中*/
sort();
for(i=0;i<8;i++) {
printf("%d\n",array1[i]);
}
return 0;
}
|