字符串 - C语言中为什么经常需要参数用来指明字符指针长度?
本文介绍了字符串 - C语言中为什么经常需要参数用来指明字符指针长度?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如下面的例子:
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而不再传递长度。
char *str="hello"; // sizeof(str) == 8, 在64位系统上;32位系统是4
char str[]="hello"; // sizeof(str) == 6
char str[10]="hello"; // sizeof(str) == 10
这篇关于字符串 - C语言中为什么经常需要参数用来指明字符指针长度?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文