**我想在每个数组的第一个元素上分配指针,但是我得到了这个消息 - >> 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;
}
答案 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];