C数组与指针
指针说白了就是地址.指针变量就是用来存放指针(地址)的变量。
两个有关的运算符:
&取地址运算符 &a 就代表变量a的地址
*指针运算符 *a 就代表变量a的值
C语言规定,数组存储空间的首地址存放在数组名中,即数组名指向下标为0的数组元素。
由此可知数组名不仅是一个标识名字,它本身又是个地址量。由于数组的存储位置是系统分配的
,用户不能任意改变位置,所以,表示数组存储起始位置的数组名是个地址常量。另外,数组中的
每个元素都有地址,其表示形式为:&数组名[下标],其值也是地址常量。
如:数组a的首地址为a或&a,数组元素a的地址为&a.
1.指向一维数组元素的指针变量
int *p;
定义p为指向整型变量的指针变量,若有下面赋值语句:
p = &a;
则把元素a的地址赋给指针变量p。
可以在定义指针变量的同时,把数组元素的地址初始化给指针变量.例如:
int a,*p=a;
它等价于:
int a,*p;
p=a;
其作用是把数组a的起始地址,即a的地址赋给指针变量p。
需要注意到是:指针变量的类型必须与它指向的数组元素的类型一致.
定 义含 义
Int I;定义一个整型变量I
Int *p;P为指向整型数据的指针变量
Int a;定义整型数组a,它有n个元素
Int *p;定义指针数组p,它有n个指向整型的指针元素
Int (*p);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类型的指针(常量指针)来说,它的地址是一个常量,也就是说,它的指针值是常量,不可以修改,但其指向的内容是可以修改的。
页:
[1]