如下面的例子:
int zend_hash_add(
HashTable *ht,
char *arKey,
uint nKeyLen,
void **pData,
uint nDataSize,
void *pDest
);
zend_hash_add(fooHashTbl, "bar", sizeof("bar"), &barZval, sizeof(zval*), NULL);
为什么需要nKeyLen
参数?因为感觉每次传的参数都是sizeof(arKey)
,为什么不在函数内部处理呢?是不是有什么需要特殊处理的?
对于字符数组,sizeof给出来的是数组长度,对于字符指针,sizeof给出来的是指针的宽度。
如果你在这个函数内部处理,你得到的就只是指针变量的大小,不可能得到字符串长度。
字符串长度使用strlen。
如果你能确保字符串永远正确地以
\0
结尾,可以使用strlen而不再传递长度。