您的位置:首页 > 编程语言 > C语言/C++

C语言#数组与指针

2016-12-18 16:21 155 查看
指针简介:
ptr = & pooh //将pooh地址赋给ptr,
简介运算符:
cal = * ptr  //获取ptr的数值。
指针声明:
int * ptr;
double *ptr;
...

=========================================================================================================

在函数原型或函数定义头的场合中,int *ar可以代替int ar[ ]。
即: int sum(int ar[],int n);=int sum(int *ar,int n);
注:无论何时,int *ar都是一个指针,int ar[]也可以是指针,但是只在声明形参时可以使。

=========================================================================================================

保护数组:

传递数值可以不改变原数据内容:void swap(int
a,int
b);
传递指针会改变原数据内容:void swap(int *a, int *b); //或者 void swap (int a[], int b[]);

由于以上特性使得函数在引用数组时易改变数组数据,当数组数据不需要改变,或者禁止改变时,就需要对数组进行保护。
通常方法是使用const:

    int sum(const int a[].int n) //把a指向的数组当成包含常量数据的数组对待。 
注:1.指向常量的指针不能修改数组。

            int a[]={1,2,3,4,5}; //声明一个数组a

            const int *pd = a; //声明一个指向常量的指针,此时pd无法改变数组的内容。
2.同时需要注意只有非常量的数据才可以传给普通指针(常量数据只能传给常量指针而无法传给普通指针)
const int a[ ] = {1,2,3,4,5};

int *pa=a; //非法,pa是普通指针

            const int *pa=a; //合法,pa是指向常量的指针。

固,函数声明时,若使用const,既可以保护数据,又可以使函数使用const数组。

 
========================================================================================================= 

多位数组(int z[4][2]):
    数组名z实际是两个int数组的首地址。
        1.z与z[0]具有相同的数值。

        2.z+1与z[0]+1不同。

        3.z是地址的地址(双重间接)&(即*z为z[0],z[0]为z[0][0],*z=z[0][0])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: