首页 理论教育 Linux系统编程:指针应用指南

Linux系统编程:指针应用指南

时间:2023-11-16 理论教育 版权反馈
【摘要】:图4.1指针变量、数组的关系3.函数参数是指针的应用定义:int dt[15],n=7;变量n是为了表明数组里的实际数据,也是为了保证利用“基地址+偏移量”访问数组数据时不越界。例4.1指针应用。

Linux系统编程:指针应用指南

1.指针与指针变量的概念、指针与地址运算符关系

内存的每一个字节有一个编号,这就是“地址”。

整型变量占用4字节,第1个字节的地址管理着4字节内存。同样,float、long型变量的第1字节地址也管理着自己的4字节内存。double变量的第1字节地址管着自己的8字节内存,字符型变量只有1个字节,它的地址只管理1个字节内存。

内存每一个字节的“地址”无法管理多少字节,只有变量的地址才能够知道管理了多少字节,这就是变量地址的特点,具有这个特点的地址叫作指针。

指针变量:将普通变量地址作为“数据”保存的变量叫作指针变量。保存有普通变量地址的指针变量称为“指向”变量。指针变量声明为:

int*p; //p只能指向整型变量,指针的这个类型称为“基类型”

指针与地址运算符:

& ——取指针运算符,取变量的地址,该地址具有类型。例如:

double a=3.14,*p;

p=&a;

* ——间接访问运算,*p就是变量a。*p不一定是“读”,而应当解释为“访问”。通过指针所保存的地址和类型访问其指向的内存,决定从那个字节开始并访问多少字节,以及其中的数码是什么类型的数据。这就是指针为什么有类型的原因。

指针变量可以运算:*p=*p+1; //等价于 a=a+1;

2.变量、数组、字符串、函数的指针及指针的引用

1)如何让指针指向变量?

int m,*q; q=&m; //q的基类型与变量m的类型相同。

2)一维数组、字符串与指针的关系

数组的名字是一个指针,且是常量指针。

字符串用数组存储时,其数组名也是指针,字符串常量实际是用一个无名数组存储的,其起始位置的地址就是它的指针。例如

double data[20];

char st[20]=“I am a boy.”;

char *p=“Hello,world!”;

但是,数组名是简单的指针,指向数组的第1个元素。如果使用间接运算“*数组名”,其只能访问数组的第1个元素。要想访问其他元素,要借助其他方法。

*(数组名+i)或数组名[i](www.xing528.com)

是通过“基地址+偏移量”的方法访问数组各个元素。

指针变量、数组的关系如图4.1所示。

图4.1 指针变量、数组的关系

3.函数参数是指针的应用

定义:int dt[15],n=7;

变量n是为了表明数组里的实际数据,也是为了保证利用“基地址+偏移量”访问数组数据时不越界。当给函数传递数组名时,一般也要传递这个数据。

例4.1 指针应用。

如果输入4,10,输出结果为10,4。

4.函数返回值是指针的应用

void * malloc(字节数);

用来申请字节数的内存,返回无(空)类型指针,使用时由编程人员强制转换为所需类型。例如:

5.指针数组的应用

指针数组:数组的元素都是指针。其一般用于字符串数组。

例4.2 指针数组应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈