C编译器错误 - 警告:赋值在没有强制转换的情况下从指针生成整数 错误:下标值既不是数组也不是指针

Big*_*ero 0 c compiler-errors

答案:我没有正确初始化变量.

我需要记住指针声明如何在C中工作.

这段代码应该采用以下格式的一些命令行参数:

./foo 1 2 3 4 5 6 7 8 9 10 ...(任何合理数量的论点,只要它们可被5整除即可

我的计划是有5个可变大小的int数组来存储稍后用于逻辑的参数.所以,如果我有10个参数,我将有5个2-int数组,依此类推.

int* IP1, IP2, BID, PN, EID;
int i;

if((argc < 2) || ((argc-1) % 5) != 0)
{ 
   /* Some error statements */
}

IP1 = (int*)malloc(argc-1);
IP2 = (int*)malloc(argc-1);  //This is line 26
BID = (int*)malloc(argc-1);
PN = (int*)malloc(argc-1);
EID = (int*)malloc(argc-1);

for(i = 0; i < argc-1; i+=5){
  IP1[i] = argv[i+1];
  IP2[i] = argv[i+2];        //This is line 33
  BID[i] = argv[i+3];
  PN[i] = argv[i+4];
  EID[i] = argv[i+5];
  printf("%d\t", i);
}
Run Code Online (Sandbox Code Playgroud)

问题是,我得到了这些奇怪的错误

>cc foo.c -o foo
foo.c: In function ‘main’:
foo.c:26: warning: assignment makes integer from pointer without a cast
foo.c:27: warning: assignment makes integer from pointer without a cast
foo.c:28: warning: assignment makes integer from pointer without a cast
foo.c:29: warning: assignment makes integer from pointer without a cast
foo.c:33: error: subscripted value is neither array nor pointer
foo.c:34: error: subscripted value is neither array nor pointer
foo.c:35: error: subscripted value is neither array nor pointer
foo.c:36: error: subscripted value is neither array nor pointer
Run Code Online (Sandbox Code Playgroud)

我不知道他们应该是什么或代表什么.我查了一下,到目前为止没有任何帮助.我希望你们都可以.

编辑:为了记录我尝试评论第26-30和33-37行,它编译得很好.只是想我会为后代添加它.

Oli*_*rth 6

这个:

int* IP1, IP2, BID, PN, EID;
Run Code Online (Sandbox Code Playgroud)

与此相同:

int *IP1;
int IP2;
int BID;
...
Run Code Online (Sandbox Code Playgroud)

你要这个:

int *IP1, *IP2, *BID, *PN, *EID;
Run Code Online (Sandbox Code Playgroud)

但更一般地说,尽量避免在同一行上声明多个变量.