11/12c++学习:指针的深入浅出(二)

  1.数组名表示数组第一个元素的地址,下面的语句将p声明为指向wages数组第一个元素地址的指针

  double *p = wages; 

  wages = &wages[0] = address of the first element of the array

  2.指针变量加1时,其增加的值等于指向的类型占用的字节数,如double类型指针加1,地址值将增加8,即8个字节的内存;再如short型,加1后地址值增加2。

  3.当一个指针指向数组时,如wages[1],c++编译器会将它看做 *(wages + 1),这表示,编译器优先计算(wages+1)这第二个元素的地址,再找到存储在这个地址上的值,最终结果边代表了wages[1]。因此我们可以发现,数组表示法中,在很多种情况下可以用相同的方式使用指针名和数组名。

如 arrayname[i] becomes *(arrayname + i)

pointername[i] becomes *(pointername + i)

但是其中存在着一种差别:指针的值可以被改变,但数组名是常量,因此出现了下列对比:

pointername = pointername + 1; //合法,指针加一,地址增加对应类型字节数。

arrayname = arrayname + 1; //不合法,数组名是常量,不能对常量值进行修改。

  4.字符型指针输出为字符串,若想输出地址,需要使用强制转换类型,转换为int,即使用(int *)p输出字符串的地址。

  5.字符串与数组。将字符串赋值给数组不能单纯使用复制操作符,需要使用strcpy()或strncpy()。

  6.new用于结构的两步骤:创建结构和访问结构成员。

eg: ①inflatable *ps = new inflatable; 

②访问成员:若inflatable结构中含有price成员,则ps->price表示被指向的price成员。其中"->"为箭头成员操作符,由连字符和大于号组成。

Tips:什么时候使用句点操作符呢?答:结构标识符为结构名的时候,inflatable.price。

什么时候使用箭头成员操作符呢?答:标识符为指向结构的指针时,ps->price。

另外,ps指向inflatable,则(*ps)表示结构本身,即(*ps)也是一个结构,可以使用(*ps).price来指向成员变量price。

  7.delete[]和delete。delete[]用于释放new分配的对象数组指针所指向的内存,delete用于释放new分配的单个对象指针所指向的内存。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值