做网站一定要有服务器吗,wordpress企业主题模板下载,深圳做微信商城网站,网站建设安全级别前言#xff1a;本篇文章将继续讲解有关指针的剩余基础知识。
学无止境#xff0c;一起加油叭#xff01;#xff01; 目录
一.指针运算
1.指针 - 整数 2.指针的关系运算 3.指针 - 指针
二.指针与数组
三.二级指针
四.指针数组
总结 一.指针运算
指针运算包括以下三…前言本篇文章将继续讲解有关指针的剩余基础知识。
学无止境一起加油叭 目录
一.指针运算
1.指针 - 整数 2.指针的关系运算 3.指针 - 指针
二.指针与数组
三.二级指针
四.指针数组
总结 一.指针运算
指针运算包括以下三种
指针 - 整数指针 - 指针指针的关系运算
1.指针 - 整数
我们尝试用指针来打印一个数组的内容
#includestdio.h
int main()
{int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p arr;//数组名是数组首元素的地址int i 0;for (i 0; i 10; i){printf(%d , *(p i));}return 0;
}
我们在指针上中已经了解到指针-整数能够实现指针的跳动。
那么我们便能够根据这个办法来实现打印数组
p指向的是数组的首元素地址那么p i就等于是指针跳到了数组下标为 i 的元素的地址。
当然要实现这一点就必须要求数组和指针变量是相同的数据类型。 2.指针的关系运算
指针与指针之间也是可以比较大小的比较的是指针所指向的地址的大小。
#includestdio.h
int main()
{int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p1 arr[4];int* p2 arr[5];if (*p1 *p2){printf(hehe);}else{printf(haha);}return 0;
}
例如我们来比较一下p1和p2的大小结果如下 3.指针 - 指针
指针-指针的实现必须满足两个条件
两个指针指向同一块区域一个数组等两个指针的类型相同
#includestdio.h
int main()
{int arr[10] { 0 };int* p1 arr[9];int* p2 arr[0];printf(%d, p1 - p2);return 0;
}
来看上边的代码会得到什么结果呢 结果是9有的小伙伴可能会猜是36以为会是两个指针之间的字节个数。
而实际上是两个指针之间的元素个数。
二.指针与数组 如上代码之所以能把数组和指针联系在一起是因为数组名可以表示数组首元素的地址。
但是数组名也有不同的用法
1.sizeof数组名数组名单独放在sizeof内部数组名则代表整个数组计算的是数组的大小单位是字节。数组名数组名代表整个数组取出的是数组的地址数组的地址和数组首元素的地址值是一样的但是类型和意义是不一样的。 三.二级指针 int a 5; int* p a;//p是指针变量一级指针变量 int** pp p;//pp是指针变量二级指针变量 这样也很像套娃对不对所谓二级指针也就是存放一级指针变量地址的指针。当然也可以有三级、四级、五级等等等等但是一般都不会用到包括二级指针也是不常用的。
那么二级指针如果想要找到a的地址就要解引用两次第一次是找到*p的地址第二次才能找到a的地址所以要用** pp。
四.指针数组
听到这个名字可能很多小伙伴会产生疑惑这个到底是指针还是数组呢
答案是数组。
我们听说过整型数组浮点型数组字符数组它们分别是存放整形、浮点型、字符的数组。
那么指针数组也就是存放指针变量的数组。 char* arr[5];//存放字符型指针的数组 int* arr2[4];//存放整型指针的数组 那么指针数组到底有什么用处呢
我们可以用指针数组来模拟实现一个二维数组
#includestdio.h
int main()
{int arr1[] { 1,2,3,4,5 };int arr2[] { 6,7,8,9,10 };int arr3[] { 11,12,13,14,15 };int* arr[] { arr1,arr2,arr3 };int i 0;for (i 0; i 3; i){int j 0;for (j 0; j 5; j){printf(%d , arr[i][j]);}printf(\n);}return 0;
}
我们已经知道数组名是数组首元素的地址所以我们就可以直接将数组名传入指针数组中这样我们就相当于直接得到了三行元素并且可以用相同的方法进行打印 虽然模拟出来二维数组的样子但其实并不是真的二维数组我们知道二维数组的元素内存地址都是相连的但这里我们所创建的三个数组都是互不相连的。
总结
指针的基础知识到这里就要结束啦希望小伙伴们都能有所收获
喜欢博主文章的小伙伴们不要忘记一键三连哦下期我们将对结构体展开讲解一起期待一下叭
我们下期再见