指针

pointer

Last updated on Apr. 25, 2024, created on Apr. 11, 2024.

指针变量共有四种类型,分别为整型指针、double型指针、浮点型指针和字符型指针。

定义整型指针变量:int* ip;

定义double型指针变量:double* dp;

定义浮点型指针变量:float* fp;

定义字符型指针变量:char* cp;

一级指针

定义空指针变量:int* ip=NULL;

空指针对应的逻辑值为假,非空指针对应的逻辑值为真。

定义double型一维数组指针:double *p[3];

为指针变量赋值:int a=10;ip=&a;

取指针变量所指内存中的值:int b=*ip;

打印指针变量(地址):printf("指针变量ip对应的地址为:%p\n",ip);

打印指针变量所指的内存中存储的值:printf("指针变量ip所指的内存中存储的值为:%d\n",*ip);

二级指针

二级指针一般用于创建动态二位数组,理解为这个变量是指向一级指针的指针变量。

定义一个空二级指针:int **p;

例 1

int **p=malloc(2*sizeof(int*));
p[0]=malloc(3*sizeof(int));
p[1]=malloc(4*sizeof(int));

例 2

int *p[2],a[2][2];
p[0]=a[0];
p[1]=a[1];

注意,在例2中,看似定义的p是一级指针,实际上它的每个元素都指向二维数组的一行,因此是一个二级指针,可以使用诸如p[1][1]的指令。

例 3

void(double *p[3]){…} //这里定义的是指向含三个元素的一维数组的一级指针p,由于传入A后每个元素又是一个含3个元素的一维数组,因此p相当于main函数中的A
int main(){
 int A[3][3]={1,2,3,4,5,6,7,8,9};
 fun(A);
}