欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++指针小结

程序员文章站 2022-07-03 14:49:39
...
  1. 声明指针
    要声明指向特定类型的指针,需按照如下格式:
typeName *pointerName

示例:

double *pn;//pn指向一个double类型的值
char *pc;//pc指向一个char类型的值
  1. 给指针赋值
    将内存地址赋给指针,可以对变量名运用&运算符,来获得被命名的内存的地址,new运算符返回未命名的内存地址
    示例:
double *pn;
double *pa;
char *pc;
double bubble=3.2;
pn=*bubble//将pn的地址赋给pn;
pc=new char//给pc赋一个char 的地址;
pa=new dobule[20]//给pa赋值一个数组长度为20的地址;
  1. 对指针解除引用
    对指针的引用意味着获取指针指向的值,对指针应用解除指针引用或间接值运算符(*)来解除引用。
cout<<*pn;//输入一个double值
*pc<<'S'//将'S'的地址赋给pc
  1. 区分指针和指针指向值
    如果pt是指向int的指针,则*pt不是指向int的指针,而是完全等同一个int的类型变量,pt才是指针。
    示例:
int *pt=new int ;//给pt赋值一个int的地址
*pt=5;
  1. 数组名
    在多数情况下,C++将数组名视为数组第一个元素的地址
    示例:
int c[10];//c的地址为c[0]的地址

一种例外情况是,将sizeof运算符用于数组名,此时将返回整个数组的长度

  1. 指针算术
    C++允许将指针和整数相加。加一的结果等于原来的地址加上指向对象占用的总字节数。还可以将指针减去另一个指针,获得两个指针的差。后一种运算将得到一个整数,仅当两个指针指向同一个数组(也可以指向超出结尾的一个位置)时运算才有意义:将得到两个元素的间隔
    示例:
int a[10]={5,2,8,4,1,2,2,4,6,8};
int *pt=a;
pt=pt+1;//pt原来地址3004上加上4字节
int *pe=&a[9];//pe是3036,占4个字节
pe=pe-1;//pe地址是3032,占4个字节
int diff=pe-pt;//得到间距
  1. 数组的动态联编和静态联编
    使用数组声明创建数组时,将采取静态联编,即数组长度在编辑时设置:
int a[10];

使用new[]运算符创建数组时,将采取动态联编(动态数组),即将运行时为数组分配空间,其长度也在运行时分配,使用完这种数组后,应使用delete[]释放其占用的内存

int size;
cin>>size;
int *a=new int [size];
.....
delete []a;
  1. 数组表示法和指针表示法
    使用方括号数组表示法等同于对指针解除引用:
a[0] means*a means the value at address a;
a[3] means*(a+3)means the value at address a+3;

数组名和指针变量都是如此,因此对于指针和数组名,既可以使用指针表示法,也可以使用数组表示法。

int *pt=new int [5];
*pt=5;
pt[0]=6;
pt[9]=44;
int coast[10];
*(coast+4)=12;
相关标签: C++学习

上一篇: 时间戳

下一篇: C语言 | 指针小结