分配' int'中的不兼容类型to' int [10]'在C.

时间:2017-12-05 17:59:54

标签: c

**我想在每个数组的第一个元素上分配指针,但是我得到了这个消息 - >> int'的分配中的不兼容类型to' int [10]'在C **

#include <stdio.h>
#include <stdlib.h>
#define ten 10
int main ()
{
  int min = 0, max = 0, *minptr, *maxptr, i;
  int arr1[ten], arr2[ten], *arr1_ptr[ten], *arr2_ptr[ten];
  arr1_ptr = &arr1[0];
  arr2_ptr = &arr2[0];
  minptr = &min;
  maxptr = &max;

  return 0;
}

2 个答案:

答案 0 :(得分:1)

类型不同。 &arr1[0]的类型为int*arr1_ptr的类型为int*[10]。这就是为什么会出现此错误消息的原因。您甚至错误地复制了错误消息。

另请注意,这可能是您想要的

arr1_ptr[0] = &arr1[0];

因为现在类型匹配并且它意味着 - 您将int变量地址分配给数组的第一个元素,其中数组的每个元素都是int*类型。

答案 1 :(得分:1)

arr1[0] int值。因此&arr1[0]是指向该单int的指针。因此&arr1[0]必须是int *类型。

变量arr1_ptr是指向10的{​​{1}}指针数组。如果要使该数组的元素指向int的元素,则必须将arr1元素的地址分配给arr1的元素:

arr1_ptr

另一方面,如果你想要一个指向数组的指针,那么你必须这样做。

arr1_ptr[0] = &arr1[0];