泡澡青蛙_ 2023-09-14 23:28 采纳率: 0%
浏览 8

c语言指针运算,指针转换格式优先级

printf("%s\n", *cpp[-2] + 3),
我的理解:cpp是三级指针,此时指向的是二级指针首地址,解引用后是 c+3,然后再+3
看别人的他是把 *cpp[-2] 转换为 * *(cpp-2)+3),他的这个我能理解,cpp-2指向二级指针首地址,然后解引用后得到一级指针地址,再解引用后得到一级指针里的"FIRST",
想问这个是怎么转换的?又怎么理解?

int main()
{
    char* c[] = { "ENTER","NEW","POINT","FIRST" };
    char** cp[] = { c + 3,c + 2,c + 1,c };
    char*** cpp = cp;

    printf("%s\n", **++cpp);
    printf("%s\n", *-- * ++cpp + 3);
    printf("%s\n", *cpp[-2] + 3);//怎么理解?* *(cpp-2)+3)
    printf("%s\n", cpp[-1][-1] + 1);

    return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-09-14 23:33
    关注

    你确认这代码可以运行?

    img

    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日