AudioResample **pResample 指针的地址图解
AudioResample **pResample; // pResample 存储 AudioResample* 的地址
AudioResample *ar = *pResample; // ar 现在指向 AudioResample 结构体
pResample
→ 指向AudioResample*
的地址 (0x2000
)*pResample
→ 取出AudioResample*
,得到0x3000
ar = *pResample
→ar
现在存储0x3000
,和*pResample
指向同一块AudioResample
结构体的内存
再看一个demo
AVFilterGraph **graph
AVFilterGraph *filter_graph = avfilter_graph_alloc();
*graph = filter_graph;
AVFilterGraph **graph;
声明了一个AVFilterGraph*
的指针的指针,意思是graph
是一个指向AVFilterGraph*
类型的指针。AVFilterGraph *filter_graph = avfilter_graph_alloc();
通过avfilter_graph_alloc()
函数创建并分配一个新的AVFilterGraph
对象,并将其指针赋给filter_graph
。
最后一行 *graph = filter_graph;
*graph
表示解引用graph
,也就是访问graph
指向的AVFilterGraph*
位置。filter_graph
是已经分配好的AVFilterGraph*
,所以*graph = filter_graph;
这行代码的意思是将filter_graph
的值(即指针)赋给graph
指向的内存位置。
具体操作
在调用 avfilter_graph_alloc()
后,filter_graph
指向了一个有效的 AVFilterGraph
对象。而 *graph = filter_graph;
是将这个指针存储在 graph
指向的内存中。换句话说,graph
指向一个指针,并且这行代码让它指向了 filter_graph
。
总结
*graph = filter_graph;
的作用是:
- 将
filter_graph
指向的AVFilterGraph
对象的指针赋给graph
指向的位置。 - 在执行此操作后,
*graph
和filter_graph
会指向相同的AVFilterGraph
实例。
*graph = filter_graph;
赋值后的graph跟filter_graph关系图