目录
前言
七、指针
7.1~3 指针与变量、指针操作、指向指针的指针
7.4 指针与数组
7.4.1 用指针标识数组
7.4.2应注意的问题
a. 数组名是指针常量
b. 指针变量的当前值
c. 数组超界
7.4.3多维数组与指针
7.4.4指针数组
a. 指针数组
b. 数组指针
c. 对比总结
前言
在C语言中,指针和数组之间存在着密切的关系,指针可以用来标识和操作数组元素
- 数组名是数组的首地址,即a[0]的地址(常量);
- 指针的值也是一个地址(变量)
- 如果一个指针p指向数组a的首地址(即指向a[0]),则p与a表示的是同一个对象。
-
int a[10]; int *p=a; //int *p=&a[0];
-
七、指针
7.1~3 指针与变量、指针操作、指向指针的指针
【重拾C语言】七、指针(一)指针与变量、指针操作、指向指针的指针-CSDN博客https://blog.csdn.net/m0_63834988/article/details/133690334?spm=1001.2014.3001.5501
7.4 指针与服务器托管网数组
7.4.1 用指针标识数组
可以使用指针来标识数组元素。通过将数组名转换为指针,可以通过指针来访问数组中的元素。
- 数组名是指针(常量),指针也是数组
-
int a[5]; int *p p=a; // 也可写成 p=&a[0]
- 访问数组a的第i个元素,如下操作等价
-
a[i] *(a+i) *(p+i) p[i]
-
-
7.4.2应注意的问题
a. 数组名是指针常量
数组名实际上是指向数组首元素的指针常量,它存储了数组的起始地址。由于数组名是常量,因此不能对其进行赋值操作。
- 指针变量可以参与运算
- 虽然数组名也是指针,但对数组名却不能这样,因为数组名是指针常量
- 对数组变量a的增1运算“a++”是非法的
b. 指针变量的当前值
指针变量的当前值是指针所指向的内存地址。指针变量存储了一个地址值,该地址指向内存中的某个位置。通过解引用指针,可以访问或修改指针所指向地址处存储的值。
c. 数组超界
数组超界指的是访问数组元素时超过了数组的有效索引范围。当我们访问数组时,应该确保索引值在合法范围内,即大于等于0且小于数组长度。如果超出了数组的有效索引范围,将会导致未定义的行为,可能会访问到未知的内存区域,从而引发错误或崩溃。
#include
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *ptr = arr; // 数组名作为指针常量
// 使用指针算术访问数组元素
printf("数组元素:n");
for (int i = 0; i
7.4.3多维数组与指针
指针可以用于处理多维数组:多维数组在内存中以连续的方式存储,可以通过指针来依次访问数组中的元素。
以 int 类型二维数组为例:
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12}
};
可以使用指针来表示这个二维数组。对于二维数组,我们需要使用指向数组的指针,即指向一维数组的指针。可以定义一个指针变量,并让它指向二维数组的首地址:
int (*ptr)[4]; // 指向一维数组的指针
ptr = arr; // 指向二维数组的首地址
使用指针来访问二维数组及其元素。通过逐层解引用指针,我们可以访问每个元素:
// 访问二维数组的元素
int element = ptr[1][2]; // 访问第2行第3列的元素,值为7
// 或者使用指针算术运算来访问元素
int element = *(*(ptr + 1) + 2); // 与上面的访问方式等效,值为7
-
ptr[1][2]
表示访问第2行第3列的元素 -
*(ptr + 1) + 2
表示访问第2行第3列的元素地址 -
*(*(ptr + 1) + 2)
表示访问第2行第3列的元素值
7.4.4指针数组
a. 指针数组
指针数组是指一个数组,其中的每个元素都是指针类型。换句话说,指针数组是一个存储指针的数组。每个指针可以指向不同的对象或变量。
指针数组的声明形式为type *arrayName[size]
,其中type
是指针指向的数据类型,arrayName
是数组的名称,size
是数组的大小。
int *ptrArray[5]; // 声明一个包含5个指针的指针数组
b. 数组指针
数组指针是指一个指针,它指向一个数组。换句话说,数组指针是一个指向数组的指针变量。指向的数组的元素类型是固定的。
数组指针的声明形式为type (*ptrName)[size]
,其中type
是指针指向的数据类型,ptrName
是指针变量的名称,size
是数组的大小。如上述int (*ptr)[4]:
int (*ptr)[4]; // 声明一个指向包含4个int类型元素的数组的指针
c. 对比总结
- 指针数组是一个数组,其中的每个元素都是指针类型。
- 数组指针是一个指针,它服务器托管网指向一个数组。
- 指针数组的元素可以指向不同类型的对象或变量,而数组指针指向的数组的元素类型是固定的。
- 指针数组的大小是数组的大小,而数组指针指向的数组的大小是指针指向的数组的大小。
#include
int main() {
int arr[3] = {1, 2, 3};
int* ptr_arr[3]; // 指针数组,每个元素是一个指向整数的指针
int (*ptr)[3]; // 数组指针,指向一个包含3个整数的数组
for (int i = 0; i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
Scipy库提供了多种正态性检验和假设检验方法。以下是一些常用的检验方法的列表: 正态性检验方法: Shapiro-Wilk检验:scipy.stats.shapiro Ander服务器托管网son-Darling检验:scipy.stats.anderson…