知识点总结:
1.这周新开的章节是指针。
对于指针变量
·一般形式:类型名 *指针变量名;
·定义指针变量要使用指针声明符*;
例如:int i,*p; (声明变量i是int类型,变量p是指向int型变量的指针。指针值可以是特殊的地址0,也可以是一个代表机器地址的正整数。)
·定义多个指针变量时,每一个指针变量前面都必须加上*;
注:指针变量的类型不是指指针变量本事的类型,而是指它所指向的变量的数据类型。无论何种类型的指针变量,它们都是用来存放地址的,因此指针变量自身所占的内存空间大小和它所指向的变量数据类型无关,尽管不同类型的变量所占的内存空间不同,但不同类型指针变量所占的内存空间大小都是相同的。
·指针变量被定义后,必须将指针变量和一个特定的变量进行关联后才可以使用它,也就是说,指针变量也要先赋值再使用,当然指针变量被赋的值应该是地址。
·定义指针变量:指针变量名是一个标识符,要按照c标识符的命名规则对指针变量进行命名。指针变量的数据类型是它所指向的变量的类型,一般情况下一旦指针变量的类型被确定后,它只能指向同种类型的变量。在定义指针变量是需要使用指针声明符*,但指针声明符并不是指针的组成部分。例如:定义 int *p;说明p是指针变量,而不是*p。
2.指针的基本运算
·取地址运算和间接访问运算:单目运算符&用于给出变量的地址。(指针的类型和它所指向变量的类型必须相同)。在程序中,“*”除了被用于定义指针变量外,还被用于访问指针所指向的变量,它也被称为间接访问运算符。
·赋值运算:一旦指针被定义并赋值后,就可以如同其他类型变量一样进行赋值运算。例如:
int a=3,*p1,*p2;
p1=&a;
p2=p1;
将变量a的地址赋给指针p1,再将p1的值赋给指针p2,因此指针p1和p2都指向变量a。此时,*p1、*p2和a访问同一个存储单元,它们的值一样。
注:指针只有在被赋值以后才能被正确使用。
·指针变量的初始化:C语言中的变量在引用前必须先定义并赋值,指针变量在定义后也要先赋值再引用。在定义指针变量时,可以同时对它赋初值。例如:
int a;
int *p1=&a;
int *p2=p1;
注:在指针变量定义或者初始化时变量名前面的“*”只表示该变量是个指针变量,它既不是乘法运算符也不是间接访问符。
把一个变量的地址作为初始值赋给指针变量时,该变量必须在此之前已经定义。因为变量只有在定义后才被分配存储单元,它的地址才能赋给指针变量。
可以用初始化了的指针变量给另一个指针变量作初始化值。
不能用数值作为指针变量的初值,但可以将一个指针变量初始化为一个空指针。例如:int *p=1000;是不对的,而int *p=0;是将指针变量初始化为空指针。这里0是ASCII字符NULL的值。
指针变量定义时的数据类型和它所指向的目标变量的数据类型必须一致,因为不同的数据类型所占用的储存单元的字节数不同。
遇到的问题:暂无
心得:落下的那节课其实就是这节,在宿舍自学了好久问了好多人才弄懂,这一节课没上整出这么多麻烦事。