我尝试了以下粘贴的代码并收到错误:
无法在作业中将
int (*)[6]
转换为int*
编译因-Wfatal-errors
而终止。
#include <stdio.h>
int my_array[] = {1,23,17,4,-5,100};
int *ptr;
int main(void)
{
int i;
ptr = &my_array; /* point our pointer to the first
element of the array */
printf("\n");
for (i = 0; i < 6; i++)
{
printf("my_array[%d] = %d ",i,my_array[i]); /*<-- A */
printf("ptr + %d = %d\n",i, *(ptr + i)); /*<-- B */
}
return 0;
}
答案 0 :(得分:2)
ptr = &my_array;
&my_array
的类型为int (*)[6]
,而ptr
的类型为int*
。它们是不兼容的类型。
你应该做的是:
ptr = my_array;
现在,my_array
类型为int[6]
,在上述情况下会衰减为int*
。所以它有效。
答案 1 :(得分:2)
数组可转换为指针。你打算做的是:
ptr = my_array;
答案 2 :(得分:2)
你必须使用:
ptr = my_array;
相当于:
ptr = &my_array[0];
答案 3 :(得分:0)
您需要做的就是:
ptr = my_array;
无需使用&
运算符。