指针数组
指针数组的作用
指针数组和数组指针是C语言中常用的概念,它们分别有不同的作用和用法。
- 指针数组: 指针数组是一个数组,其中的每个元素都是指针类型。它可以用来存储多个指针,每个指针可以指向不同的数据类型或者相同的数据类型。指针数组的作用是方便地管理多个指针,可以通过遍历数组来访问每个指针所指向的数据。
int* ptrArray[5]; // 定义一个包含5个指针的指针数组
int a = 1, b = 2, c = 3;
ptrArray[0] = &a; // 第一个指针指向变量a
ptrArray[1] = &b; // 第二个指针指向变量b
ptrArray[2] = &c; // 第三个指针指向变量cfor (int i = 0; i < 3; i++) {printf("%d\n", *ptrArray[i]); // 输出每个指针所指向的值
}
——————————————————————————————————————————————————————————————————————————————————————
整形数组 存放整形的数组
字符数组 存放字符的数组
指针数组 存放字符的数组
指针数组是一个数组,其中的每个元素都是指针类型。简单来说,它是一个存储指针的数组。
定义一个指针数组的语法
<数据类型> *<数组名>[<数组大小>];
其中,<数据类型>
表示指针所指向的数据类型,<数组名>
是数组的名称,<数组大小>
表示数组的大小。
指针数组可以存储多个指针,每个指针可以指向不同的内存地址。这使得指针数组非常灵活,可以用于存储不同类型的数据或者不同对象的地址。
例如,定义一个指针数组来存储整型指针:
int *ptrArray[5];
这个指针数组可以存储5个整型指针。每个元素都可以指向一个整型变量或者整型数组。
使用指针数组时,可以通过索引来访问和操作每个指针元素。例如,可以通过ptrArray
来访问第一个指针元素,并通过*ptrArray
来访问该指针所指向的值。
总结一下,指针数组是一个存储指针的数组,它提供了一种灵活的方式来存储和操作不同类型的指针
下面进行指针数组的举例(参考指针数组模拟二维数组)
指针篇章-(2)-(一级指针和二级指针之间的理解)-CSDN博客
———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
数组指针
数组指针的作用
数组指针的作用主要有以下几个方面:
- 遍历数组:通过数组指针,可以使用指针算术运算来遍历数组中的元素,实现对数组的遍历操作。
- 传递数组给函数:通过将数组指针作为参数传递给函数,可以在函数内部对数组进行操作,而无需复制整个数组。
- 动态分配内存:通过数组指针,可以使用动态内存分配函数(如malloc)来动态创建数组,灵活地管理内存空间。
—————————————————————————————————————————————————————————————————————————————————————
数组指针变量是什么
数组指针是指向数组的指针变量。它可以用来表示数组的首地址,并可以通过指针的偏移来访问数组中的元素。定义数组指针的语法如下:
其中,数据类型表示数组中元素的类型,指针变量名是指针变量的名称,数组长度表示数组的长度。
根本的说
指针数组,是数组
数组指针是指针
数组指针是指向数组的指针,它可以指向数组的首地址。通过数组指针可以访问数组中的元素,可以进行指针运算来遍历数组。例如,int* ptr 表示一个指向 int 类型的数组的指针。
而数组指针变量是一个变量,它存储了一个数组指针的地址。它本身并不指向数组,而是指向一个指针,这个指针指向数组的首地址。通过数组指针变量可以间接地访问数组中的元素。例如,int* arrPtr[] 表示一个数组,其中的每个元素都是 int 类型的指针。
不加上括号则p和【】是一体的 加上了 则不是一体 [ ]的优先级更高
—————————————————————————————————————————————————————————————————————————————————————
数组指针示范1
这里取出的是整个数组的地址 ,但是他本身代表的的是数组首元素的地址
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int arr[10] = { 0 };int* pl = arr;printf("%p\n", pl);printf("%p\n", pl + 1);//所以+1 加上的是一个地址大小int(*p2)[10] = &arr;//这里取出的是整个数组的地址 ,但是他本身代表的的是数组首元素的地址 printf("%p\n", p2);printf("%p\n", p2 + 1);//所以+1 加上的是整个地址return 0;
}
—————————————————————————————————————————————————————————————————————————————————————
数组指针语法格式
数据类型 (*指针变量名)[数组长度];
这里注意要带括号
int arr[5] = {1, 2, 3, 4, 5};
int (*ptr)[5]; // 定义一个指向整型数组的指针变量
ptr = &arr; // 将指针指向数组的首地址
—————————————————————————————————————————————————————————————————————————————————————
数组指针示范 2
#include <stdio.h>int main() {int arr[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };int (*p)[10] = &arr;int i = 0;for (i = 0; i < 10; i++) {printf("%d ", (*p)[i]);}return 0;
}
在main函数中,首先定义了一个长度为10的整型数组arr,
并初始化了数组的元素。然后定义了一个指向数组的指针p,
并将其指向数组arr。接下来使用一个循环遍历数组arr,
通过指针p来访问数组元素,并使用printf函数将每个元素打印出来。
—————————————————————————————————————————————————————————————————————————————————————
二维数组传参的本质
一维数组和二维数组
指针指向第一行的五个元素的数组
一次跳过一行
j是二维数组里面的一维数组的每个元素
二维数组传参可以写成数组也可以写成指针的形式
补充
这里详细介绍二维数组和一维数组以及指针的的关系,在指针5里面会进行详细介绍
这里可以先进行学习一下 这里主要是讲解的是数组名的代表的分别是什么
sizeof和strlen的详细万字解读-CSDN博客
——————————————————————————————————————————————————————————————————————————————————————
指针数组和数组指针二者的区别总结
-
数组指针(Array Pointer): 数组指针是指向数组的指针变量。它可以用来访问数组中的元素。数组指针的语法格式如下:
数据类型 (*指针变量名)[数组长度]; 这里的数据类型表示数组中元素的类型,指针变量名是指向数组的指针变量的名称,数组长度表示数组的长度。例如,如果要定义一个指向整型数组的指针变量,可以使用以下语法:int (*ptr)[5]; 这样就定义了一个指向包含5个整型元素的数组的指针变量ptr。
-
指针数组(Array of Pointers): 指针数组是一个数组,其中的每个元素都是指针。它可以存储多个指针值。指针数组的语法格式如下:
数据类型 *指针数组名[数组长度]; 这里的数据类型表示指针所指向的数据类型,指针数组名是指针数组的名称,数组长度表示数组的长度。例如,如果要定义一个包含3个整型指针的指针数组,可以使用以下语法:int *arr[3]; 这样就定义了一个包含3个整型指针的指针数组arr。
实例剖析
指针篇章-(冒泡排序详解)-CSDN博客