#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//数组的定义和初始化
int array1[5]={1,2,3,4,5};
int array2[5]={1,2,3};//没写的后面的元素值默认为0
int i;for(i=0;i<5;i++)printf("%d ",array2[i]);printf("\n");
int array3[5];//可能会有垃圾值
for(i=0;i<5;i++)printf("%d ",array3[i]);printf("\n");
int array4[ ]={1,2,3,4,5};
for(i=0;i<sizeof(array4)/sizeof(int);i++)printf("%d ",array4[i]); printf("\n");
//sizeof(array4)在这里能探测到数组array4的整体空间占用情况,
//array4数组名在这里不单指明了首地址,!!!还携带了数组的整体空间占用属性(不是所有的首地址或指针都会有就么一个特性)
//数组的动态定义
//while(getchar()!='\n');上文有用到scanf并且未用同样的while语句时才加这一句。
//fflush(stdin); //<--它在VC上能这么用,但在UNIX下不能这么用。
//fflush(stdout);可以用,表示强制输出缓冲区中的内容
INPUT_ARY_SIZE:
printf("请输入待定义的数组元素个数:");
int iRet=scanf("%d",&i);
while(getchar()!='\n');
//fflush(stdout); //要用上面的WHILE替代使用
//printf("%m\n");输出最后一次的系统错误信息,如果上文有明确的错误返回值时,再调用这一句比较有效
if(iRet<1||i<=0||i>=100){printf("输入错误!\n");goto INPUT_ARY_SIZE;}
int array5[i];//运态定义了数组的元素个数。这样的数组仍然由栈管理,自动变量类型,系统会自动的回收空间,没有办法进行初始化 <--UNIX下支持这样的定义,但是在WINDOWS下可能不行
int i2; for(i2=0;i2<i;i2++)array5[i2]=i2;//可以这么賦值
for(i=0;i<sizeof(array5)/sizeof(int);i++)printf("%d ",array5[i]);printf("\n");
//智能数组,不需要人工回收空间
//数组可以只有一个元素 <--这样的数组就等价于一个变量
}