static修饰局部变量延长局部变量的生命周期,只能被初始化一次,函数调用结束,局部变量还存在
#include <stdio.h>
int fun(void){
static int count=10;
return count--;
}
int count =1;
int main(void)
{
printf("global\t\tlocal static\n");
for(; count < 10; ++count)
printf("%d\t\t%d\n", count, funO);
return;
作业
有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图,写一函数实现以上功能,在主函数中输人n个整数和输出调整后的n个数。
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
extern i;
void print(int arr[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
}
void setarray(int arr[] , int n , int m)
{
int i=0,tmp=0;
while(m--)
{
tmp = arr[n-1];
for(i=n-1;i>0;i--)
{
arr[i]=arr[i-1];
}
arr[0]=tmp;
}
}
int main ()
{
int n,m;
puts("请输入整数个数和移动位数(以空格隔开):");
scanf("%d%d",&n,&m);
int sz = sizeof(int) * n;
int * arr = (int *)malloc(sz);
assert(arr);
int i=0;
printf("请输入%d个数:\n",n);
for(i=0;i<n;i++)
{
scanf("%d",arr+i);
}
puts("调整前:");
print(arr,n);
setarray(arr,n,m);
puts("\n调整后:");
print(arr,n);
free(arr);
arr=NULL;
return 0;
}