指针的要点总纳
一、1.地址和指针的概念(面试考点之一)
如果在程序中定义了一个变量,在编译时就给这个变量分配内存单元。系统根据程序中定义的变量类型,分配一定的长度空间(这里是一个出题点)。如:一般微机使用的C系统为整型变量分配2个字节,对实型变量分配4个字节,对字符型变量分配1个字节,内存区的每一个字节有一个编号,这就是“地址”。(内存区每一个字节的编号,就是一个地址.) 内存单元的内容与内存单元的地址是两个概念。
在C语言中,将地址形象化地称为“指针”(意思是通过它能找到以它为地址的内存单元,一个变量的地址称为该变量的“指针”)。如果有一个变量专门用来存放另一变量的地址(即指针),则称它为“指针变量”。
2.变量的指针和指向变量的指针变量
程序中用"*"符号表示“指向”。
a.定义一个指针变量: 基类型 *指针变量名; 用赋值语句使一个指针变量指向一个其它类型的变量。A.指针变量前面的“*”,表示该变量的类型为指针型变量。B.在定义指针变量时必须指定基类型。
b.指针变量的引用:牢记指针变量中只能存放地址(指针),不要将一个整型量(或任何其它非地址类型的数据)赋给一个指针变量。A.&:取地址运算符。B.*:指针运算符(或称”间接访问“运算符)。例如:&a为变量a的地址,*p为指针变量p所指向的存储单元。
c.指针变量作为函数参数:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。指针变量作函数参数也要遵循”值传递“的规则方式。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值,函数的调用可以得到一个返回值(函数值),通过运用指针变量作参数,可以得到多个变化了的值,如果不运用指针变量是很难作到这一点。
3.数组与指针(C语言的重中之重)
a.指向数组元素的指针:定义一个指向数组元素的指针变量的方法,与指向变量的指针变量相同。C语言规定数组名代表数组中第一个元素的地址。
b.通过指针引用数组元素:可以看出数组中的”[]“实际上是变址运算符,即将a[i]按a+i计算地址,然后找出此地址单元中的值。A.下标法,如:a[i]形式。B.指针法,如:*(a+i)或*(p+i)。其中a是数组名p是指向数组元素的指针变量,其初值p=a。在使用指针变量时,需要注意:(1).可以改变指针变量的值。(2).要注意指针变量的当前值。(3).在使用指针变量指向数组元素时,应切实保证指向数组中有效的元素。(4).注意指针变量的运算。在使用*p++形式的运算时,一定要十分小心,弄清楚先取p值还是先使p加1。
c.用数组名作函数参数:
d.多维数组与指针:
A.多维数组元素的地址:
B.指向多维数组元素的指针变量:
C.用指向数组的指针做函数参数:
4.多维数组与指针
a.多维数组元素的地址
b.指向多维数组元素的指针变量
c.用指向数组的指针作函数参数
5.字符串与指针
a.字符串的表示形式
b.字符串指针作函数参数
c.对使用字符指针变量和字符数组的讨论