C语言二级指针怎么用?
通常是因为,我希望别人给我的一个指针赋值。
例如,指向COM接口的指针是void*类型,而获取COM接口的函数的参数是void**。
当然这个东西需要你多加练习。等你理解的更深入之后,你自然会逐渐理解。
现在我再举一个简单的例子来说明。绘制一个地址大小为1字节的内存空间:
|地址|值|
|-|-|
|20|0A|ch1←-┐
|-|-|│
|21|抄送|│
|-|-|│
|22|20|p1-┘←-┐
|-|-|│
|23|22|pp1-┘
|-|-|
现在让我们假设有一个变量。
Charch10x0A//假设ch1的地址位于20H:的M[20h]0ah。
char*p1ampch1
char**pp1ampp1
假设内存空间,我们把它想象成一个数组:char[]给这个数组起了个名字叫m,比如:
charm[256]
现在有了那个0x0A,就可以过了。
charch2**pp1
因此,我们可以把它理解为:
Charch2m[m[pp1]]//求解二级指针引用。
这是二级指针;
-
同样的,
charch3*p1
可以理解为:
Charch3m[p1]//去指针引用
好的,在汇编层,那sit(汇编语言中,没有m,只会出现[])。例如:
MOV·
为什么说指针是C语言的精髓?
指针也是一种叫做指针变量的变量,但它存储的是地址。就像酒店的礼宾号一样,每个礼宾号都有一个指针(地址),不同类型的指针指向不同类型的地址,就像酒店的不间一样,比如标准间、三人间、情侣间、总统套房等。
所以我们可以很容易地通过指针找到数据的存储位置,并对其进行操作。C语言指针的使用非常灵活。在实际操作中使用指针可以提高程序的运行效率,使程序的结构更加紧凑合理,数组占用的内存小。虽然使用指针有很多优点,但是使用时必须小心,以防止指针变直。用后及时释放。避免程序崩溃。
C的指针非常灵活,我们在编程的时候可以随意修改,但正因为如此,编程过程中稍有不慎就会造成内存泄漏,访问到不该访问的内存。与其他语言相比,只有指针是唯一的,这使得它更加简洁高效,这也是C不死的原因。当你能使用指针并很好地使用它时,你就能发挥C的强大威力,但如果你不如果不好好利用它,它会成为一枚炸弹。
你可以通过指针操纵内存,高级程序员可以自己小心翼翼的控制内存。你可以使用设计良好的算法、数据结构和内存控制来实现高性能的程序,但初级程序员往往可以不能正确使用它们,这会导致错误。
指针主要用来定位、使用和管理程序的内存,提高程序执行的效率。虽然今天的硬件性能s的计算机已经很不错了,已经完全满足了一般的程序开发和执行,但是如果想更深入的了解软硬件编程,希望更灵活独立的实现程序开发。指针是其他编程语言不具备的一个非常重要的功能。