指针的一些注意事项

        指针变量也有加减运算。指针可以加减某个整型数,指针与指针可以相减,但指针与指针相加是没有意义的。另外,指针的乘除也没有意义。指针的值是一个内存地址,而一个内存地址可以用一个整型数表示,因此指针的运算可以看做整型数间的运算。不过,指针运算有其特殊性。如果某个数据占据多个字节,那么该数据的指针只能指向其起始地址,即第一个字节的地址,指向中间某个字节是没有意义的。可以使用“*( p + 1)”、“*( p – 2)”等求得指针移动后指向的数据

      指针与指针相减表示两个指针间可以存储的变量的个数。假设两个 short 型指针 p 和 q 所指的地址分别是 1000和 996,则 p-q 的值就是 2,即两个 short 型变量。

  Int arr[10];

  Int *p;

  P=&arr[0];

  P=arr//与上者一样 都是只想数组首地址 但是注意没哟&因为数组名就是首地址

要访问第i+1个元素 可以用*(p+i) 也可以用arr[i]  或者*(arr+i)


   char* pstr = "Hello World";// 定义一个字符串指针  这种定义方法从表面上看好像违背了指针的概念:指针就是一个指向地址的变量,在这个地址

还没有确定的时候( "Hello World" 是不知道的),不能给这个地址里面赋值。但其实这种写法是正确的,原因是在 C++中这是一种特殊的情况,这个字符串“Hello World!”被定义在 C++的常量存储区中,指针 pstr 是一个指向常量存储区中一块内存的  指针常量存储区的内容是不可以修改的,因此对于上面定义的字符串 pstr,不可以修改其内容。


在对字符串进行赋值的时候,很容易犯一个错误——直接给字符串的指针赋值。

charbuffer[16];

char* p = buffer;

p ="Hello World";


在上述程序中目的是要把字符串“Hello World”存储在数组 buffer 中,但实

际的运行效果却不是这样的。在赋值前,字符指针指向数组的首地址   在赋值后,字符指针指向字符串所在内存地址。而没有达到修改 buffer 的目的。

正确的做法是使用 C++的库函数 strcpy,进行字符串复制:

strcpy(p, "Hello World" );

                                                                        shmily_h

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值