-
学指针之前你要先了解这些概念。
地址:在计算机内存中,每一个字节单元,都有一个编号称为地址地址:在计算机内存中,每一个字节单 , 都有一个编号称为地址
指针:内存的地址就是指针。
指针变量:用来存放地址的变量叫指针变量。 -
c语言假设p是一个指针,p、*p和&p三种表示方法的不同意义
p: 指针变量,它的内容是地址量
*p :指针所指向的对象,它的内容是数据
&p:指针变量占用的存储区域的地址,是个常量 -
指针的赋值运算
向一个指针变量赋值时,赋的值必须是地址常量或指针变量,不能是普通的整数(除了赋0以外)
指针与一般整数变量之间的关系运算没有实际意义。但可以和零进行等于和不等于的关系运算,判断指针是 否为空
p++ p先与++结合 因为++的优先级别高于 -
指针数组与数组指针
数组名记录的是首地址,数组的首地址就是数组的第一个元素的地址,数组取下标 的操作实际上就是,地址偏移后进行取值操作。
指针是一个变量,可以做++操作。
数组时一个常量,不可以做++做操。数组指针:实际上就是行指针。 int (*p)[3];
指针数组:是一个数组,该数组中的每一个元素是一个指针,(常量字符串)char arr1[2][4] = {“abc”,”def”};
char *arr2[2] = {“abc”,”def”};区别:arr1的数据是保存在一段连续的栈内存空间中(数组指针可指向该数组)
arr2在栈上有两个8字节空间。是一维数组,一维数组需使用一个一级 指针,但该一级指 针定义为char *类型的一级指针,char * *p,这样的指针 数组需要使用二级指针进行指向。用数组指针表示a[2][3]的地址 *(p+2) + 3
-
函数指针和指针函数
函数名记录的是一个地址,该地址是函数的入口地址
函数指针:
是一个指针,该指针指向一个函数的入口地址 int (*p)(int,int);一般用于回调函数
指针函数:
是一个函数,返回值是一个指针
函数指针数组:
是一个数组,该数组的每一个下标元素存放的是函数指针
Int (*func_arr[3])(int,int);
指向函数指针的指针函数数组:
是一个数组,是一个函数指针数组,该数组中的每一个
下标元素存放的是一个指向指针函数的函数数组指针
int *(*funcarr[3])(int,int); -
多级指针
把一个指向指针变量的指针变量,称为多级指针变量
对于指向处理数据的指针变量称为一级指针变量,简称一级指针
而把指向一级指针变量的指针变量称为二级指针变量,简称二级指针
多级指针的运算
Int **q; q+1就是移动一个指针
带你10分钟掌握c语言指针
最新推荐文章于 2023-02-22 14:09:43 发布