C 数组
 
数组是标准C里面最重要的集合数据类型,数组可以看做是多个相同类型变量组成的集合。数组在C89中是定长的,在C99中可以是变长的,变长的意思是可以通过变量来定义数组的长度。
 
一、和Java差不多
 
#include

int main(){
         int a[3],avg,sum;
         int i=0;
        printf( "请输入3个整数:\n" );
         for(sum=0;i<3;i++){
            scanf( "%d",&a[i]);
            sum +=a[i];
        }
        avg = sum/i;
        printf( "求和=%d,求均值=%d",sum,avg);
        getch();
         return 0;
}
 
请输入3个整数:
12
13
14
求和=39,求均值=13
 
二、数组的遍历
 
求数组长度,需要用sizeof运算符。
sizeof(数组变量名)这个算出来的是数组总长度所占字节数。
实际上,数组长度=总字节数/数组第一个元素的字节数。
 
#include

int main(){
         int a[3]={1,2,3};
         int i;
        printf( "数组所占字节数为:%d\n",sizeof(a));
         for(i=0;i            printf( "%d\n",a[i]);
        }
        getch();
         return 0;
}
 
数组所占字节数为:12
1
2
3
 
C中遍历数组还要注意一点就是不能在for语句的第一个初始化语句中定义变量。比如:for(int i =0;i<......  ,这是java 的写法。如果按照Java的写法写就挂了。
 
三、变长数组
 
#include

int main(){
         int x,i,sum=0,avg=0;
         int a[x];
        printf( "请输入数组长度:" );
        scanf( "%d",&x);
        printf( "请输入%d个整数:\n" ,x);
         for(i=0;i            scanf( "%d",&a[i]);
        }
        printf( "\n数组的长度为:%d",x);
        printf( "\n数组的内容:" );
         for(i=0;i             printf( "%d,",a[i]);
        }
        getch();
         return 0;
}
 
请输入数组长度:4
请输入4个整数:
4
2
3
1

数组的长度为:4
数组的内容:4,2,3,1,
 
四、字符数组
 
字符数组比较特殊点。
char c[3]={'a','b','c'};
char d[3]="abc";
 
两个数组是不同的:
1、长度不同:c长度是3,d长度是4.
2、一个正确,一个错误,c是正确,d是错误的。
正确写法应该是:
char c[3]={'a','b','c'};
char d[4]="abc";
 
五、字符串
 
C中,字符串和字符、字符数组有联系,上面看到了,但是也有很大差异。
1、明确说还没有定义字符串的关键字,如果有,那就是字符数组了。
2、字符串和字符除了双单引号的定义差别外,还有就是字符串总是以一个不可见的转移字符\0结尾,这个\0是字符串结束的标记。因此表面上看到的字符串长度总是比实际长度小1.
3、使用%s格式在printf函数中输入输出字符串。
 
六、多维数组
 
这些数组的特性和java中的完全一样,没啥好说的了。