第十一章 指针
目录
- 一. 指针变量
- 二. 取地址运算符和间接寻址运算符
- 三. 指针赋值
一. 指针变量
- 概述
指针就是地址,而指针变量就是存储地址的变量。指针的大小都是相同的。32位机器一个地址是4个byte。64位机器一个地址是8个byte。指针需要多大空间取决于地址的存储需要多大空间。
- 声明
与普通变量声明类似,唯一的不同就是变量名前有*。
例子:int *p
C语言要求每个指针变量只能指向一种特定类型(引用类型)的对象,至于应用类型是什么类型则没有限制。
二. 取地址运算符和间接寻址运算符
- 取地址运算符
&取地址运算符。
例子, x是变量,&x就是x在内存中的地址。
例子:
Int I, *p;
P = &I;
- 间接寻址运算符
*间接寻址运算符。
例子,p是指针,*p就是当前指向的对象。
续上例子:
Printf(“%d\n”,*p);
例子:
J = *&I;
本质就是:j = i
只要p指向i,*p就是i的别名。p不仅拥有和i相同的值,而且对p的改变也会改变i的值(*p是左值,所以对他赋值是合法的)。
注意:不要把间接寻址运算符用于未初始化的指针变量。如果指针变量p没有初始化,那么试图使用p的值会导致未定义的行为。给*p赋值尤其危险。如果p恰好具有有效的内存地址,赋值会试图修改储存在该地址的数据。
三. 指针赋值
C语言允许使用赋值运算符进行指针的复制,但前提是两个指针具有相同的类型。任意数量的指针变量都可以指向同一个对象。
本篇博客为本人学习C时的详细笔记,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处