3、关于指针的概念知识与常见错误

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都是不行的。一开始学习我还是看不出其中的错误所在,初步理解后,还是能清楚的发现其中的错误了,也算是小进步吧。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值