C语言这个函数语句该怎么理解“memcpy(ctrlid, g_CtrlList+(i*CTRLID_LEN), CTRLID_LEN);”

g_CtrlList+((i*CTRLID_LEN)该怎么翻译,函数的意思我知道,只是对这个不知道怎么理解。

memcpy(ctrlid, g_CtrlList+(i*CTRLID_LEN), CTRLID_LEN); 意思就是将“g_CtrlList+(i*CTRLID_LEN)”这个指针值所指向的字符串,按照“CTRLID_LEN” 代表的长度,复制到字符数组中ctrlid追问

g_CtrlList+((i*CTRLID_LEN)该怎么翻译,函数的意思我知道,只是对这个不知道怎么理解。

追答

g_CtrlList 和((i*CTRLID_LEN)不是用来翻译的,在这段程序所在的源程序,可以找到g_CtrlList 、i、CTRLID_LEN这三个指针和变量的定义。
从当前程序,我只能猜测g_CtrlList 指针指向一个字符串的首地址,设L=CTRLID_LEN
g_CtrlList+i*L 就是先找到字符串的首地址,再向后移动“i”倍的L长度。

例如:g_CtrlList='abcdefghijklmnopq '; i=3; CTRLID_LEN=2;
g_CtrlList+((i*CTRLID_LEN)的指针就只向 'ghijklmnopq '。
也就是指向g_CtrlList的首地址后开始向后的第六个字符

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-08-02
内存拷贝,你可以百度下参数的意思,这里ctrlid就是一个内存地址及指针,后面一个参数也是内存地址和指针,ctrlid_len这个是要拷贝的字节数。你这个函数参数的实际参数要看你程序里具体的是多少了。
第2个回答  2012-08-02
从g_CtrlList所指的起始地址移动i*CTRLID_LEN个字节长度后开始复制CTRLD_LEN个字节到ctrlid中即可。。。
相似回答