限于现在没有太多的时间,把自己对这一重要知识,进行非常深挖自己真实想法的总结,但还是觉得能说一说自己的见解,毕竟知识的巩固就是同自己对话,从而完善的。
对指针的初步理解
指针其实是电脑自己的调用方式的具体体现,通过访问其存储地址的方式完成一系列操作,是基于电脑运行逻辑的操作方式,相对应的指针也只能存储地址,理解指针,就像是查询一个又一个库房中的数据,我们有了对应的库房号,才能知晓其具体位置,只不多先前的访问都是计算机通过逻辑术语最后转成了自己能看懂的话。指针呢,就是其本质之一。
指针的基础知识点
有以下几点:
-
定义指针变量:指针是一种特殊的变量类型,用于存储内存地址。指针变量定义时需要指定指针类型和指向的变量类型,例如
int *p
表示定义一个指向整型变量的指针变量。 -
取地址运算符:
&
运算符可以用于获取变量的内存地址,例如int a = 10; int *p = &a;
表示定义一个指向整型变量a
的指针变量p
,并将a
的地址赋值给p
。 -
解引用运算符:
*
运算符可以用于获取指针所指向的变量的值,例如int a = 10; int *p = &a; printf("%d", *p);
表示输出指针变量p
所指向的整型变量a
的值。 -
指针的算术运算:指针可以进行加、减、比较等运算,例如
p++
表示将指针p
指向下一个地址。 -
指针和数组:数组名可以看作是指向数组首元素的指针,例如
int a[5]; int *p = a;
表示将指针变量p
指向数组a
的首元素。 -
指针和函数:函数可以返回指针类型的值,例如
int *func(int a, int b);
表示定义一个返回指针类型的函数。同时,指针也可以作为函数的参数传递,例如void func(int *p);
表示定义一个接收指针类型参数的函数。 -
指针和动态内存分配:C语言中可以使用
malloc
函数动态分配内存,返回值是一个指向分配内存的指针,例如int *p = (int *)malloc(sizeof(int) * 10);
表示动态分配了一个可以存储 10 个整型变量的内存空间,并将其地址赋值给指针变量p
。 -
指针和指针数组:指针数组是一个数组,其中每个元素都是一个指针,例如
int *p[5];
表示定义一个包含 5 个指针元素的数组。
特别值得注意的是野指针的存在,野指针是不和谐的,类似于bug的存在,其出现方式过多,无法一一枚举。暂时先写这些非常常用的吧,本人能力有限,写给自己看看得了