C语言学习笔记——指针与数组

  1. 指针与地址

通常的机器都有一系列连续编号或编址的存储单元,这些存储单元可以是单个进行操作,也可以连续成组进行操作。指针是能够能够存放一个地址的一组存储单元(通常是2或4字节),所以,指针就像一个访问计算机内存空间的工具。

一元运算符 & 可用于取一个对象的地址,语句

p = &c ;

将把c的地址赋给变量p,称p为指向“c”的指针。地址运算符&只能应用于内存中的对象,即变量与数组元素。他不能作用于表达式,常量或register类型的变量。

一元运算符 * 是间接寻址或间接引用运算符。当它作用于指针时,将访问指针所指向的对象。我们假定int型x和y,ip是指向int类型的指针。

指针ip声明如下:

int *ip;

由于指针也是变量,所以在程序中可以直接使用,二不必通过间接引用的方法使用。例如,如果ip是另一个指向整型的指针,那么语句

ip =  ip;

将把ip中的值拷贝到ip中,这样,指针ip也将指向ip所指的对象。

  1. 指针与函数参数

C语言是以值传递的方式将参数值传递给被调用函数的,所以,被调用函数不能直接修改主函数的变量。但是将函数定义为以下形式:

下列语句

swap(&a,&b);

一元运算符 & 用来取变量的地址,这样&a就是一个指向变量a的指针。swap函数的所有参数都声明为指针,并且通过这些指针来间接访问他们指向的操作数。

指针参数使得被调用函数能够访问和修改主调函数中对象的值。

  1. 指针与数组

在C语言中,指针与数组关系十分密切,通过数组下标能完成的任何操作都可以通过指针完成。一般来说,用指针编写的程序比用数组下标编写的程序执行速度快。

声明

int a[10];

a[i]表示该数组的第i个数组。如果pa的声明为

int *pa;

则说明它是一个指向整型对象的指针,那么。赋值语句

pa = &a[0];

则可以将指针pa指向数组a的第0个元素,即pa的值为数组a[0]地址。

这样,赋值语句

x = *pa;

将把数组元素a[0]中的内容复制到变量x中。

/*摘自《C程序设计语言·第二版》*/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值