1、指针
指针的本质是一个操作受限的非负整数,不能进行加、乘、除运算,但是能够进行减法运算。形象的说,将指针比作门牌号,将门牌号进行加、乘、除运算,并没有实际意义,但进行减法运算是有实际意义的,能够算出中间隔了多少房间。
2、基本指针类型常见的一些错误
2.1
int *p;
int i=5;
*p=i; //error,没有初始化指针变量p,没有确定指针变量p指向哪块区域就进行赋值
printf("%d\n",*p); //但是整个程序只会弹出警告提示,不会报语法错误,编译器为vc++
在上面的指针变量p,并不是没有初始化就没有指向的,而是存有垃圾值并且指向以这个垃圾值为地址的值。上面代码中相当于把i赋值到了以垃圾值为地址的存储单元中。所以定义了指针变量,必须要进行初始化。
2.2
int i=5;
int *p;
int *q;
p=&i;
*q=p; //程序会报语法错误,因为*q是int类型,p是int *类型,数据类型不一致
printf("%d\n",*q);
错误类型与2.1基本一致,没有初始化指针变量,系统给定义的q、p都分配了空间,但是没有初始化的话,*p、*q是没有被分配空间的,因为p、q指向是以垃圾值为地址的空间的值,所以读、写*p、*q都是不行的。一开始学习我还是看不出其中的错误所在,初步理解后,还是能清楚的发现其中的错误了,也算是小进步吧。