我正在这里尝试使用指针算法,但收到此警告。我不明白这出了什么问题。
由于我的基础知识很薄,因此编写代码时要使用指针算法。
printf("To Check ptrs \t");
int var[3]={10,20,30};
int *ptr,i;
ptr=var;
for(i=0;i<3;i++)
{
printf("Address is %d \t", ptr);
printf("Value is %d \t", *ptr);
ptr++;
}
ptr=(int*)&var;
for(i=0;i<3;i++)
{
printf("Address is %d \t", &ptr[i]);
printf("Value is %d \t", ptr[i]);
}
ptr_arith.c:14:5: warning: assignment from incompatible pointer type [-Wincompatible-pointer-types]
ptr=&var;
^
不过,我得到了想要的输出。另外,当我使用
ptr=(int*) &var;
,它没有给我任何错误。 因此,如果有人可以告诉我是什么原因导致它“不兼容”,我会很感激。
答案 0 :(得分:1)
这很简单。
您应该按照以下方式将数组衰减到指针:
let connections = [
{
group: 'a',
items: [
{
id: '1', name: 'Andre'
},
{
id: '2', name: 'David'
}
]
},
{
group: 'b',
items: [
{
id: '3', name: 'Brandon'
}
]
},
]
const result = connections.flatMap(f => f.items).find(f => f.id == id);
console.log(`result as array`, [result]);
int arr[10];
的类型为arr
int *
-类型为int *
&arr[0]
的类型是指向10个整数的数组的指针。
您应该在代码中使用
&arr
或ptr = var
与ptr = &var[0]
和var
的类型与指针&var[0]
相同。
ptr
类型不同,因此出现警告。