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])
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])
相关文章推荐
- C语言之指针、数组和函数
- C语言多维数组指针的技巧
- C语言专题――数组与指针
- C语言之指针、数组和函数
- C语言中指针和数组名小趣
- 浅谈C语言中数组和指针的互操作
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- C语言中字符数组和字符串指针分析
- C语言之指针、数组和函数
- 再谈C语言中数组和指针之间的互操作
- C语言中的指针,数组,指针数组, 数组形式参数
- 水滴石穿C语言之指针、数组和函数(转载)
- 水滴石穿C语言之指针、数组和函数
- c语言学习零碎整理(7):数组名是指针吗?(补)
- C语言的指针和数组
- (C语言)数组与指针的使用
- C语言中字符数组和字符串指针分析
- 水滴石穿C语言之指针、数组和函数
- C语言数组和指针的剖析