这段代码有错误吗?如果是这样,在哪里

Is there an error in this code? If so, where

我有作业待处理,因为我无法理解这段代码。这段代码有没有错误?如果有,能否告知一下。

#include <stdio.h>
void main()
{
    int arr[5] = {10, 20, 30, 40, 50};
    int *ptr1 = arr;
    int *ptr2 = &ptr1;
    printf('%d", **ptr2);
}

根据 C Standard 没有参数的函数 main 应声明为

int main( void )

在此声明中

int *ptr2 = &ptr1;

声明的变量和初始化器有不同的类型,并且没有从一个到另一个的隐式转换。

你必须写

int **ptr2 = &ptr1;

并且 printf 调用的参数中有错字

printf('%d", **ptr2);
       ^^

必须

printf("%d", **ptr2);