C++中的指针和指针的引用

C++中的指针

指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。

1、指针的值
 
指针的值是指针本身存储的数值,这个值将被编译器当作一个地址,而不是一个一般的数值。在32位程序里,所有类型的指针的值都是一个32位整数,因为

32位程序里内存地址全都是32位长。
 

指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当

于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。 

2、指针所指向的类型

  1. int p[3];//p先和[]结合,说明p是一个数组,再和int结合,所以p是一个int型数组
  2.  
  3. intp[3];//优先级[]比*高,p是数组,再加上int*,可以称它为指针数组,数组的每一个元素的值都为指针(地址)
  4.  
  5. int (*p)[3];//*p可以看作是普通变量,就回到第三种情况(int p[3]),但是这里p是指针变量,它指向的是一个包含3个整型数值的数组。可以称它为数组指针,数组中每一个元素的值为普通整型值。
  6.  
  7. int** p;//int*代表指针类型,*是指针类型,所以p是指向int型指针的指针,p指向的类型是int*类型(int型指针)
  8.  
  9. int p(int);//这很明显是一个返回类型为int,并且带一个int型参数的函数
  10.  
  11. int (*p)(int);//p是函数指针,指向的是返回值为int并且带一个int参数的函数。这个声明包含两部分:函数变量+函数地址变量(姑且把函数也看做是变量)
  12.  
  13. int* (*p(int))[3];//这个有点复杂,它仍然是一个函数指针。从*p(int)看,它是函数指针,带一个int参数;然后看[],说明函数返回值为数组,然后返回类型为int*。所以p是一个指向返回值为int*型指针数组,并且带一个int型参数的函数的指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值