数组只能存放同一种数据类型的数据
数组每一个元素都有一个索引号,索引号从0开始
元素个数总共占用的字节/每个元素占用的字节
int length=sizeof(score)/sizeof(score[0])
对指定的索引进行赋值
int score[5]={[3]=20,[4]=30};
数组后面的[]中只能放整形常量或者是返回值是整形常量的表达式
通过变量定义数组,如果没有对数组进行初始化,里面存放是一些垃圾数据,(随机值)
尽量不要用变量来定义数组
想给数组进行一次性赋值,必须在定义数组的同时
如果定义完数组就不能对数组进行一次性赋值
变量的二进制地址是从高位开始存储
数组的地址是从地位开始存储,但是数组元素的二进制地址又是从大到小的顺序存储
数组的地址和第0个元素的地址
数组名就是数组的地址,打印数组地址的时候前面加或者不加&都可以
int array[10];
int sum=0;
for (int i=0; i<10; i++)
{
printf("请输入第%d个BTC的价格\n",i+1);
int k;
scanf("%d",&k);
array[i]=k;
sum=sum+array[i];
}
printf("%d",sum);
当数组作为参数传递的时候,会自动 转换成指针类型,指针类型占用八个字节
想在一个函数中动态计算数组的元素个数是不行的,因为指针类型只占8个字节
所以永远只能算出8个字节的数据
所以当数组要在函数中传递使用时,必须传递函数本身的地址值的同时还要必须传递函数的长度
函数的长度length=sizeof(ages)/sizeof(age[0])
三中排序:
1:选择排序
void selectSort(int array[],int length)
{
for (int i=0; i<length-1; i++) {
for (int j=i+1; j<length; j++) {
if (array[i]>array[j]) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
}
2:冒泡排序
void bubbleSort(int array[],int length)
{
for (int i=0; i<length; i++) {
for (int j=0; j<length-1-i; j++) {
if (array[j]>array[j+1]) {
int temp=array[j];
array[j]=array[j+1];\
array[j+1]=temp;
}
}
}
}
3:空间换时间方法排序
int main(int argc, const char * argv[])
{
//随机输入0~9之间的6个数值,排序后输出
int array[10]={0};
int index=-1;
for (int i=0; i<6; i++) {
printf("请输入第%d个数值",i+1);
scanf("%d",&index);
array[index]=array[index] +1;
}
for (int j = 0; j < 10; j++) {
for(int i = 1; i <= array[j] ; i++){
printf("%d\n",j);
}
}
return 0;
}