c语言的数组总结

要注意的是:

1 &a[i] 是取a[i]的地址  如果只有数组名 那就代表该数组的首个元素的地址。

   数组相邻两个元素地址相差的大小 和你数组的数据类型相关,例如char的相差是1.

  int类型相差是4,double类型的时8。

 

2数组名做加减法是, 计算结果是 加减数*元素长度+首地址。

 

3:数组中的元素地址从低到高存放的。 

 

4:在使用数组名作为参数时是调用地址值,并且必须声明元素个数。

用数组的进行的冒泡 并有详细注释

 

#include<stdio.h>

 

void function(int *a_math ,int z)//也可以写成void function(int  a_math ,int z)

 

{

 

int i,j,k,t,f=1;

 

   for (int i = 0; (i <z-1)&&f; ++i)//执行 元素个数-1次循环

 

   {   

 

     //f的意义:当本身就是按顺序排列时不执行循环,是程序高效化。

 

        f=0;

 

      for (int j = 0;j<z-i-1; j++) //执行冒泡

 

       if (a_math[j]>=a_math[j+1])

 

       {

 

          t=a_math[j],a_math[j]=a_math[j+1],

 

          a_math[j+1]=t;f=1;

 

       }

 

      for(int i=0;i<9;i++)

 

       {

 

       printf(" %d ",a_math[i]);//显示每冒一次泡后的结果

 

       }

 

    printf("\n");

 

   }

 

}

 

int main(void)

 

{

 

   int a_math[9]={93,46,78,99,88,69,54,56,77};//声明并初始化一个数组。

 

   function(a_math ,9); /数字作为参数时,传递的时地址值。而且必须说明其数组个数。

 

   for(int i=0;i<9;i++)

 

   {      

 

     //   数组名做加减法时 输出的结果=数组的首地址+元素长度*i. 

 

      printf("%p----%p\n",(a_math+i),&a_math[i]);

 

   }

 

     return 0;

 

}

 

 

posted @ 2014-07-17 21:43  卢灿  阅读(458)  评论(0编辑  收藏  举报