`

C数组与指针

    博客分类:
  • C
c 
阅读更多
指针说白了就是地址.
指针变量就是用来存放指针(地址)的变量。

两个有关的运算符:

&  取地址运算符     &a 就代表变量a的地址

*  指针运算符     *a 就代表变量a的值

C语言规定,数组存储空间的首地址存放在数组名中,即数组名指向下标为0的数组元素。
由此可知数组名不仅是一个标识名字,它本身又是个地址量。由于数组的存储位置是系统分配的
,用户不能任意改变位置,所以,表示数组存储起始位置的数组名是个地址常量。另外,数组中的
每个元素都有地址,其表示形式为:&数组名[下标],其值也是地址常量。
如:数组a的首地址为a或&a[0],数组元素a[3]的地址为&a[3].
1.指向一维数组元素的指针变量
int *p;
定义p为指向整型变量的指针变量,若有下面赋值语句:
p = &a[3];
则把元素a[3]的地址赋给指针变量p。
可以在定义指针变量的同时,把数组元素的地址初始化给指针变量.例如:
int a[10],*p=a;
它等价于:
int a[10],*p;
p=a;
其作用是把数组a的起始地址,即a[0]的地址赋给指针变量p。
需要注意到是:指针变量的类型必须与它指向的数组元素的类型一致.


定  义 含   义
Int I; 定义一个整型变量I
Int *p; P为指向整型数据的指针变量
Int a[n]; 定义整型数组a,它有n个元素
Int *p[n]; 定义指针数组p,它有n个指向整型的指针元素
Int (*p)[n]; P为指向含有n个元素的一维数组的指针变量
Int f(); F为返回整型值的函数
Int *p(); P为返回值为指针的函数,该指针指向整型数据
Int (*p)(); P为指向函数的指针,该函数返回一个整型值
Int **p; 定义一个指向指针的指针变量
---------------------------------------------------------------------------------
const char*和char* const
指向常量的指针
指针常量

1.指向常量的指针
对一个利用const char*类型定义的常量指针来说,不能修改其指向的内存中的内容,但可以
修改其所指向的内存地址。

2.指针常量
指针值不可修改
指向的内容可以修改

const char*类型的指针(指向常量的指针)其所指向的内容是常量,是不可以修改的,但其指针值是可以修改的。但对于char* const类型的指针(常量指针)来说,它的地址是一个常量,也就是说,它的指针值是常量,不可以修改,但其指向的内容是可以修改的。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics