指针的使用-注意的问题

指针的使用比较灵活,但也比较容易出错。

(1)在使用指针时,一定要注意指针与它所指变量的关联。如果只是定义一个指针,而没有给指针赋值(即,没有将指针所指变量进行关联),而直接给指针所指变量赋值时,即使在编译时不会出错,但在运行时必将发生运行时错误。

例如:

  int  a=10, *p;

   p=&a;

 *p=20; //ok

如果缺少第2条语句,则会发生错误:

int    a=10,*p;

*p=20;  //error

(2)在使用用字符指针指向字符串是也需要很小心。

 char *p="hello";

cout<<p;     //ok   

 char *p="hello";

cin>>p;   //error

错误原因:指针p指向的是字符串常量,如果企图通过指向字符串的指针改变字符串常量的目的是达不到的。只能通过指向字符数组的指针改变字符数组中内容。

char  str[20]="hello";

char *p;

p=str;

cin>>p;   //ok   

cout<<p;

如果是以下形式,也会出错:

char *p

cin>>p;  //error

错误原因和(1)一样

可以通过以下方式解决:

char *p=new  char[20];

cin>>p;   //ok

(3)在使用指针进行对数组元素访问时,同样要注意数组元素访问越界问题。一定要时刻关注,当前指针变量所指向的元素位置,要保证指针在数组内的有效范围内移动。

(4)一定要弄清指针内容,和指针所指变量的内容 这两个概念。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值