获取此错误:赋值从整数生成指针而不进行强制转换 #包括 #包括 #包括 int main(int argc,字符**argv){ 结构节点*哈希表[1000000]; 结构节点*starting=NULL; 如果(argc!=2){ 返回0; } FILE*FILE=fopen(argv[1],“r”); if(file==NULL){ printf(“错误\n”); 返回0; } int j; 对于(j=0;j=0){ k=(值%1000000); }否则{ k=-(值%1000000); } 如果(用户=='i'){ if(哈希表[k]!=NULL){ 结构节点*temp=hashtable[k]; hashtable[k]=insertNew(临时值、值); }否则{ hashtable[k]=insertNew(开始,值); } }
有更多的方法正在使用,但我得到以下错误: third.c:86:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(临时值、值); ^ third.c:88:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(开始,值)获取此错误:赋值从整数生成指针而不进行强制转换 #包括 #包括 #包括 int main(int argc,字符**argv){ 结构节点*哈希表[1000000]; 结构节点*starting=NULL; 如果(argc!=2){ 返回0; } FILE*FILE=fopen(argv[1],“r”); if(file==NULL){ printf(“错误\n”); 返回0; } int j; 对于(j=0;j=0){ k=(值%1000000); }否则{ k=-(值%1000000); } 如果(用户=='i'){ if(哈希表[k]!=NULL){ 结构节点*temp=hashtable[k]; hashtable[k]=insertNew(临时值、值); }否则{ hashtable[k]=insertNew(开始,值); } },c,C,有更多的方法正在使用,但我得到以下错误: third.c:86:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(临时值、值); ^ third.c:88:45:警告:赋值从整数生成指针,而不使用强制转换[默认情况下启用] hashtable[k]=insertNew(开始,值) 我理解这意味着什么,但我不明白为什么会出现这个错误…您缺少insertNew()的原型,因此编译器假设它是一个返回int的无原型函数 您应该包含一个带有i
我理解这意味着什么,但我不明白为什么会出现这个错误…您缺少
insertNew()
的原型,因此编译器假设它是一个返回int
的无原型函数
您应该包含一个带有
insertNew()原型的头文件
在顶部,或者手动在文件顶部声明原型。如果insertNew
在同一个编译单元中,由于类型不匹配,您也会得到一个编译器错误。链接器不是那么严格。@WeatherVane:这不是链接器警告。@alk我知道。但是如果函数在不同的编译单元中,则没有错,只是说说而已。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv){
struct Node *hashtable[1000000];
struct Node *starting=NULL;
if(argc!=2){
return 0;
}
FILE *file = fopen(argv[1], "r");
if(file==NULL){
printf("error\n");
return 0;
}
int j;
for(j=0; j<1000000;j++){
hashtable[j]=NULL;
}
char user;
int value;
int k;
while(fscanf(file,"%c %d\n", &user, &value)==2){
if(value>=0){
k=(value%1000000);
}else{
k=-(value%1000000);
}
if(user=='i'){
if(hashtable[k]!=NULL){
struct Node *temp=hashtable[k];
hashtable[k]=insertNew(temp,value);
} else{
hashtable[k]=insertNew(starting,value);
}
}