指针和数组

来源:互联网 发布:手机网络监控直播 编辑:程序博客网 时间:2024/06/11 05:22

数组

数组 由一个不能改变值的指针和位数组成,a[3]  a为一个定值的指针,宽度为3 从0 开始数到2; 

一维数组的初始化方法   

        (1) 在定义数组时对数组元素赋以初值。

            例如:         int a[10]={0,1,2,3,4,5,6,7,8,9};   

                               int a[] = {1,2,3,4};l

        (2) 可以只给一部分元素赋值。例如:        int a[10]={0,1,2,3,4};    

        定义a数组有10个元素,但花括弧内只提供5个初值,        这表示只给前面5个元素赋初值,后5个元素值为0。  

        (3) 如果想使一个数组中全部元素值为0,        可以写成int a[10]={0,0,0,0,0,0,0,0,0,0};      

              不能写成int a[10]={0*10};        这是与FORTRAN语言不同的,不能给数组整体赋初值。   

         (4) 在对全部数组元素赋初值时,可以不指定数组长度。例如:       

               int a[5]={1,2,3,4,5};        可以写成int a[]={1,2,3,4,5};    

              在第二种写法中,花括弧中有5个数,系统就会据此自动定义a数组的长度为5。   

        注:C 语言中,数组的整体不能参加数据处理,参加处理的只能是数组中的元            素变量。所以要对数组进行初始化 。           

             例如:int data[5]={,4,,8,};赋值如图:         

算法分析:   1 、假设数组中第 1 个元素最大,令 xmax=a[0]   2 、将 a[i] ( 0<= i < n )与 max 进行比较,       若 a[i] < xmax , i=i+1 ,再执行 2       否则,令 xmax=a[i] , i=i+1 ,再执行 2   3 、循环结束,求出最大元素并输出 max 。     程序源代码:   #include <iostream.h>   int main()   {     int array[7];    cout<<"Please input an array with seven elements: "<<endl;    for (int i=0; i<7; i++)        cin>>array[i];    int big = array[0];    for (int j=0; j<7; j=j+1)             if (array[j]>big)    big = array[j];    cout<<"max="<<big<<endl;    return 0;   }   程序运行结果:      

指针

指针是一个有长度的变量,如int *p ,p++时移动的内存长度为 sizeof(int)  若为一个class类 p++移动的内存长度则为class占用的内存长度,指向下一个类第一个内存空间,数组指

针移动的是该指定长度数组的内存空间。

 

 int 指针初始化

          int * a = 10;
 
          int * a = NULL;
 
           a = (int *)malloc(10*sizeof(int));
 
           a[0] = 1;
 
           int * a =10;
 
           int * c = a + 15;
 
int a[] = {1,2,3,4}
intp *p = a;
注:常量内存段不能存非宁符 或数值型数据