我正在阅读扩展和嵌入PHP 这本书,并在C中遇到过这一行(带有相关结构):
typedef struct {
int sampleint;
char *samplestring;
} php_sample_globals;
int sample_globals_id;
(((php_sample_globals*)(*((void ***)tsrm_ls))[sample_globals_id - 1])->sampleint = 5
然后作者写道:
“如果您在解析该语句时遇到问题,请不要担心;它很好地集成到PHPAPI中,以至于一些开发人员从不费心去了解它是如何工作的。”
我开始迷失*((void ***)tsrm_ls)
答案 0 :(得分:1)
*((void ***)tsrm_ls)
将变量tsrm_ls
转换为指向指针的指针,然后获取指向的内容(因此最终得到指向指针的指针)
查看其余代码并假设它是正确的:
tsrm_ls
是指向php_sample_globals
结构指针数组的指针。
此代码查看该数组的sample_globals_id-1
索引查找它指向的结构,然后将该结构的sampleint
元素设置为5