c语言字符串计算哈希值,【C语言】哈希函数写法、字符串深度复制

Little trick.html

1 哈希函数

理想的哈希函数保证每一个字符串对应惟一的哈希值。下面这个哈希函数是同窗在项目中遇到的。算法

unsigned int hash(char* s)

{

unsigned int h=0;

for(;*s;s++)

h = *s + h*31;

return h%HASHSIZE; //predefined hash size

}

能够看出,这个hash函数遍历字符串中每一个字符,经过将其ASCII码计算获得最终的哈希值h。 这样来确保前面提到的结果惟一性。 咱们在gdb中验证一下,有char*类型的字符串s为nnmm。s的第i个字符用s[i]或者*(s+i)表示。编程

(gdb) p s

$8 = 0x40071c "nnmm"

(gdb) p s[0]

$11 = 110 'n'

(gdb) p s[1]

$12 = 110 'n'

(gdb) p s[2]

$13 = 109 'm'

(gdb) p *s

$9 = 110 'n'

(gdb) p *s+1

$10 = 111

(gdb) p *(s+1)

$14 = 110 'n'

(gdb) p *(s+2)

$15 = 109 'm'

能够看到,直接打印第i个字符的同时也会输出该字符的ASCII码。

你可能感兴趣的:(c语言字符串计算哈希值)