C语言笔记10(指针一)

 

 

 

变量地址:系统分配给变量的内存单位的起始地址

变量的存取方法:直接寻址和间接寻址

 

 

指针变量的定义方法

指针变量定义的一般形式:

类型标识符 *标识符

作用:定义变量为指针类型,使之专门用于存放变量的地址。

 

“*”用于定义指针变量,但指针变量名不包括 它

如:int *p;

float *q;

定义的指针变量为p,q,并不是*p,

*q

一个指针变量只能指向同一类型的变量。

如:p只能用于指向整型变量

q只能用于指向实型变量

无论指针变量指向何种类型,指针变量本身都是整型的,指针变量本身也有自己的地址,占四个字节的存储空间。

取地址运算的一般形式:

&变量

 

 

 

 

为指针变量赋初值

指针变量使用前必须有值

指针变量的初值必须是地址值

1)在定义指针变量时同时初始化

int a,*p; p=&a;

NULL是在stdio.h中定义的符号常数

#difine NULL 0

可以为指针赋空值(NULL),此时指针不指向任何变量,如:p=NULL;(p为空指针变量),screen-capture

 

 

指针与一维数组

数组中的每个·元素都可以通过下标唯一确定,即通过下标可以访问(操作)数组中的元素。

在C语言中,凡是可以通过数组下标方式完成的访问(操作)均可以通过指针方式实现。

C语言规定:数组名就是数组的首地址常量,即

int a[10];

a==&a[0]

C语言系统内部处理机制,指针方式效率高,但不直观。

访问数组的两种方式

下标方式

int a[10],*p;

p=q;(等价于p&a[0];)

使p指向a数组的第一元素啊[0];

a[i],*(a+i),p[i],

*(p+i)等价。

指针方式

通过指向数组元素的指针变量访问所需元素。

int a[10],*p=&a[0];

p++;

 

 

指针表达式与整数的加减运算

一般形式

p+n或p-n

其中:p是任意一个指针表达式,n是任何一种整型表达式。

计算规则

表达式p+n的值=p的值+p所指类型长度*n

表达式p-n的值=p的值-p所指类型长度*n

说明:只有当p和p+n或p-n都指向连续存放的同类型数据区域(数组)时,指针加、减才有实际意义。

C语言规定:表达式p+n和p-n的类型与p相同。

数组名是指针常量,不能改变常量的值,a++;a+=2;a=p;都是非法的。指针p是变量,若p指向数组的首地址,p+1代表该类型的下一变量的地址。

 

 

 

假定指针p和q指向同一个数组,则:

语法:指针表达式 关系运算符 指针表达式

(1)==和!=运算符,比较两个指针表达式是否指向同一个内存单元;

(2)<、<=、>、>=,比较两个指针所指向内存区域的先后次序。

p>q: p指针所指元素位于q所指元素之后时为1,反之为0。

p>=q: p指针所指元素位于q所指元素之后(或两指针指向同一元素)时为1,反之为0.

p==q:两指针指向同一元素时为1,反之为0.

p!=q:两指针不指向同一元素时为1,反之为0.

同类指针相减

语法:p-q

说明:

(1)同类指针相减时,两个指针应该指向连续存放的同类数据区域。

(2)p-q的值,等于(p的值-q的值)/所指类型长度,即p,q两个指针之间数据元素的个数。

 

 

强制类型转换运算

格式:

(类型名*)指针表达式

功能:

将指针表达式的值转换成指定类型的指针。

 

 

 

 

 

 

 

posted @ 2024-01-29 17:13  ZDhr  阅读(12)  评论(0编辑  收藏  举报