C语言中指针部分的总结归纳(三)

张开发
2026/4/8 20:39:04 15 分钟阅读

分享文章

C语言中指针部分的总结归纳(三)
1.二级指针众所周知指针指向的是变量的地址那么二级指针指向的就是指针的地址。来看以下代码#include stdio.h int main() { int a 10; int* p a;//取出a的地址赋给p int** pf p;//取出p的地址赋给pf printf(*p %d\n, *p); printf(*pf %p\n, *pf);//对pf一次解引用 printf(**pf %d\n, **pf);//对pf二次解引用 return 0; }可以看出二级指针存放的是一级指针的地址二级指针两次解引用得到a的值。那么二级指针是什么类别的呢例如int a 10; int* p a; int** pf p;先看p,*p是指针指向类型为int.再看pf*pf是指针指向的类型为int*(二级指针指向的一级指针一级指针类型为int*)。包括后续的三级四级指针都可以这么理解。但是我们常用的指针也就到二级了。2.指针数组我们类比一下整型数组是存放整型的数组。同理指针数组就是存放指针的数组。指针数组格式拿整型指针数组举例int* arr[5];和整型数组很相似因为是整型指针类型所以前面为int *字符指针等同理。但是字符指针中有一块需要了解请看以下代码#include stdio.h int main() { const char* pstr hello,bit; printf(%s, pstr); return 0; }运行结果为将整个字符串打印了出来但是需要了解的是pstr中存的是首字符的地址也就是h的地址 而%s打印是由首地址开始一直打印到/0.3.数组指针同指针数组易混淆数组指针的后缀是指针说明其是指针的类型指向的是数组。整型指针数组形如int(*pf)[10]一定要有括号让*与指针名pf结合否则[ ]的优先级更高pf会先和[ ]结合。总结pf先和*结合证明pf是一个指针变量指向的是有[10]个元素的数组类型是int.那么数组指针该如何初始化呢观看以下代码#include stdio.h int main() { int arr[10] {0}; int (*pf)[10] arr; printf(hello); return 0; }通过监视我们看到由此可知arr和pf的类型一致均为指针数组类型。我们完成了对其的初始化。

更多文章