1.数组大小问题(全局和局部)
数组a的定义放在函数内部,最大可开到52万;
#include <stdio.h>
#define maxn 520000
int main()
{
int a[maxn];
int x,n=0;
while(scanf("%d",&x)==1)
a[n++]=x;
int i;
for(i=n-1;i>=1;i--)
printf("%d ",a[i]);
printf("%d\n",a[0]);
return 0;
}
而放在函数外部,作为全局数组,可以开到40千万。
原因后续补上…….
2.数组赋值问题
数组不能够进行赋值操作。
如果声明的是”int a[maxn],b[maxn]”,是不能赋值b=a的。如果要从数组a赋值k个元素到数组b,可以这样做:memcpy(b,a,sizeof(int)*k)。
当然,如果数组浮点型的,复制时要写成memcpy(b,a,sizeof(float)*k)
。
另外需要注意的是,使用memcpy函数要包含头文件string.h。如果需要把数组a全部复制到数组b中,可以写得简单一些:memcpy(b,a,sizeof(a))。