C语言学习笔记14

地址与指针:

在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到所需的变量。这个变量的地址称为该变量的指针。

形如:

上图所示地址1000是变量i的指针。

变量与指针:

变量的地址是变量和指针二者之间连接的纽带,如果一个变量包含另一个变量的地址,则可以理解成第一个变量指向第二个变量。

指向就是通过地址来体现的,因为指针变量是指向一个变量的地址,所以将一个变量的地址赋给这个指针变量后,这个指针变量就指向了该变量。

形如:

将变量i的地址存放到指针变量p中,p就指向i。

指针变量:

如果有一个变量专门用来存放另一个变量的地址,他就是指针变量。

指针类型:

C语言中有专门用来存放单元地址的变量类型,即指针类型。

1、指针变量的一般格式:

定义指针变量:

类型说明 * 变量名;

其中,*表示该变量是一个指针变量,变量名即为定义的指针变量名,类型说明表示本指针变量所指向的变量的数据类型。

2、指针变量的赋值:

给指针变量的赋值只能赋予地址,而不能赋予任何其他数据。

C语言提供了地址运算符“&”来表示变量的地址。

一般形式为:

& 变量名;

如:&a表示变量a的地址,&b表示变量b的地址。

(1)定义指针变量的同时进行赋值。

int a;

int *p=&a;

(2)先定义指针变量之后再赋值。

int a;

int *p;

p=&a;

注意:

如果在定义完指针变量之后再赋值不要加" * "。

习题:模拟场景:输出标准答案,假设Z同学是班级里写作业最好的同学,大家都喜欢抄他的答案,

一天A同学找Z同学:把作业借我参考一下,Z同学说:标准答案在Y那里,Y说答案是10。代码如下:

注意:不能把一个数值赋予指针变量。

3、指针变量的引用:

引用指针变量是针对变量进行间接访问的一种形式。

*指针变量

含义为引用指针变量所指向的值。

习题:任意给定两个变量的值,利用指针编写程序将两个数交换。代码如下:

4、"&"和"*"运算符:

运算符"&"是一个返回操作数地址的单目运算符,叫做取地址运算符。

p=&i;

就是将变量i的内存地址赋给p。

运算符" * "是单目运算符,叫做指针运算符。

作用:返回指定的地址内的变量值。

q=*p;

5、"&*"和"*&"的区别:

int a;

p=&a;

习题:9头羊渡河,他们找来一支能载3头羊的木头,如果只有一头羊会划木船,那么至少几次能全部渡过河?代码如下:

指针自增自减运算:

基本整型变量i在内存中占4个字节,指针是指向变量i的地址的,这里的p++不是简单的在地址上加1,而是指向下一个存放基本整型数的地址。

猜你喜欢

转载自www.cnblogs.com/www-bokeyuan-com/p/11206227.html