C++指针(定义,用法,运算,类型……)
发布日期:2021-05-07 18:29:14 浏览次数:14 分类:精选文章

本文共 1351 字,大约阅读时间需要 4 分钟。

C++基础知识以及结构、文件(4)

指针

基本概念

指针,也成为“指针变量”,是一种大小为4个字节的变量,其内容代表一个内存地址。
定义
类型名 *指针变量名;如:int * p;//p是一个指针,变量p的类型是int *
T * P,p是一个指针,变量P的类型是T * ,表达式 P的类型是T。通过表达式 * P,我们可以读写从地址P开始的sizeof(T)个字节。
“ * ”被称作间接引用运算符。“&”被称作取地址运算符。
“&x”表示变量X的地址,表达式“&x”的类型是T * 。
目前,无论T表示什么类型,其所占空间都是4个字符。
用法
将一个T类型的变量x的地址,赋值给一个类型为T * 的指针p(让P指向X),此后表达式 * P即代表所指向的变量,通过 * P读取或修改变量X的值。
指针运算
1)两个同类型的指针变量,可以比较大小
2)两个同类型的指针变量,可以相减。
3)指针变量可以和整数类型变量或常量相加。
4)指针变量可以和减去一个整数类型变量或常量。
5)指针变量可以自增、自减。
空指针
值为NULL的指针,被称作空指针。
在C++中,可以用“NULL”关键字对任何类型的指针进行赋值。
空指针指向地址0。一般来说,程序不需要,也不能够在地址0处进行读写。
指向指针的指针
如果一个指针里存放的是另一个指针的地址,则称这个指针为指向指针的指针。
T**P; // 此处T可以是任何类型名 ,那么 p 就被称作“指针的指针”。p这个指针,其类型是 T ****,而表达式“ * p”的类型是 T ,“ * p”表示一个类型为 T * 的指针。
同理,int *** p; int **** p; int ***** p ; 等,不论中间有多少个“
”,都是合法的定义。
指针和数组
定义指针数组,如: int * array[5]; 那么array数组里的每个元素都是一个类型为int * 的指针。
一个数组的名字,实际上就是一个指针,该指针指向这个数组存放的起始地址。
定义数组:T array【N】;
标识符“array”的类型就是T *。
字符串和指针
字符串常量(和字符数组名)的类型就是char *。 可以用字符串常量(或字符数组名)给一个
char * 类型的指针赋值。
void指针
void * P;
sizeof(void)没定义,表达式“ * P”也没有定义。
void指针主要用于内存拷贝。
函数指针
类型名( * 指针变量名 )(参数类型一,参数类型二……)//类型名表示被指函数的返回时类型。
指针和动态内存分配
在C++中,使用“new”运算符来实现动态内存分配。
P=new T;//T是任意类型名,P是类型为T * 的指针。(分配sizeof(T)个字节内存空间)
P=new T[N];//T是任意类型名,P是类型为T * 的指针。N代表元素个数,可以是任何值为正整数的表达式,表达式里可以包含变量、函数调用。(分配N * sizeof(T)个字节内存空间)
C++提供“delete”运算符,用以释放动态分配的内存空间。
delete指针必须指向动态分配的内存空间。
用“new”运算符动态分配的内存空间,一定要用“delete”运算符释放。

上一篇:C++结构,文件读写
下一篇:C++数组,字符串

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2025年04月20日 21时06分29秒