为什么数组变量的地址不能分配给指针?什么是'Wfatal-errors'?

时间:2012-02-21 09:43:30

标签: c++ arrays pointers

我尝试了以下粘贴的代码并收到错误:

  

无法在作业中将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;
}

4 个答案:

答案 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;

无需使用&运算符。