From 207b121f4212e8c040ed1c2ef86d3cf2b0c2869c Mon Sep 17 00:00:00 2001 From: SisMaker <1713699517@qq.com> Date: Wed, 16 Mar 2022 18:01:33 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20c++=E7=9B=B8=E5=85=B3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...针指针数组常量指针指针常量.md | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 c++/数组指针指针数组常量指针指针常量.md diff --git a/c++/数组指针指针数组常量指针指针常量.md b/c++/数组指针指针数组常量指针指针常量.md new file mode 100644 index 0000000..f3598f6 --- /dev/null +++ b/c++/数组指针指针数组常量指针指针常量.md @@ -0,0 +1,36 @@ +数组指针 +定义 int (*p)[n]; +()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。 + +指针数组 +定义 int *p[n]; +[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1是错误的,这样赋值也是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来存放变量地址。但可以这样 *p=a; 这里*p表示指针数组第一个元素的值,a的首地址的值。 + +1.常量指针 +定义:具有只能够读取内存中数据,却不能够修改内存中数据的属性的指针,称为指向常量的指针,简称常量指针。 + +声明:const int * p; int const * p; + +注:可以将一个常量的地址赋值给一个对应类型的常量指针,因为常量指针不能够通过指针修改内粗数据。只能防止通过指针引用修改内存中的数据,并不保护指针所指向的对象。 + + + +2.指针常量 +定义:指针常量是指指针所指向的位置不能改变,即指针本身是一个常量,但是指针所指向的内容可以改变。 + +声明:int * const p=&a; + +注:指针常量必须在声明的同时对其初始化,不允许先声明一个指针常量随后再对其赋值,这和声明一般的常量是一样的。 + + +总结:主要看的就是const所处的位置。 + +1)const 在*前:表示const修饰的为所申明的类型。常量指针 常量指针是指指向常量的指针 +int const *p1 = &b; //const 在前,定义为常量指针 + +2)const 在*后:表示const修饰的为指针。指针常量 指针常量是指指针本身是常量 +int* const p2 = &c; // *在前,定义为指针常量 + +3)前*后均有:表示const同时修改类型和指针。指向常量的指针常量 + +