// set all values in the hash table to null
for(int i = 0; i < HASH_SIZE; i++)
{
hashtable[i] = NULL;
}
我保持在響應收到這個錯誤訊息到hashtable中[I]:分配時將指針整數,未作施放[-Werror]
賦值時將指針整數,未作鑄造[-Werror]
爲什麼?
// set all values in the hash table to null
for(int i = 0; i < HASH_SIZE; i++)
{
hashtable[i] = NULL;
}
我保持在響應收到這個錯誤訊息到hashtable中[I]:分配時將指針整數,未作施放[-Werror]
賦值時將指針整數,未作鑄造[-Werror]
爲什麼?
如果hashtable
是一個整數數組,則hashtable[i]
需要一個整數,而NULL
是一個指針。
所以你試圖給一個整型變量指定一個指針值(沒有強制轉換),這通常只是一個警告,但是因爲你有-Werror
所有的警告都會變成錯誤。使用0
代替NULL
。
NULL在stddef.h
#ifndef _LINUX_STDDEF_H
#define _LINUX_STDDEF_H
#undef NULL
#if defined(__cplusplus)
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
如果散列表是整數數組定義爲(void*)0
,像
#include <stdio.h>
#define HASH_SIZE 100
int main()
{
int i = 0, hashtable[HASH_SIZE];
for(i = 0; i < HASH_SIZE; i++)
{
hashtable[i] = NULL;
}
return 0;
}
此warning: assignment makes integer from pointer without a cast
將被顯示。
啊,我明白了。我也可以聲明一個指針數組並存儲這個值。我現在明白了。謝謝! – hannah 2012-07-28 02:53:47